diff --git a/sms4j-example/JavaSE/pom.xml b/sms4j-example/JavaSE/pom.xml
new file mode 100644
index 00000000..f1bd55f1
--- /dev/null
+++ b/sms4j-example/JavaSE/pom.xml
@@ -0,0 +1,28 @@
+
+ 4.0.0
+
+ org.dromara.sms4j
+ sms4j-example
+ 1.0-SNAPSHOT
+
+ JavaSE
+ JavaSE-Demo
+
+
+ org.dromara.sms4j
+ sms4j-javase-plugin
+ ${sms4j.version}
+
+
+ org.dromara.sms4j
+ TestCase
+ 1.0-SNAPSHOT
+
+
+ org.dromara.sms4j
+ Customize
+ 1.0-SNAPSHOT
+
+
+
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanAcctRestricted.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanAcctRestricted.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanAcctRestricted.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanAcctRestricted.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanBasicSend.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanBasicSend.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanBasicSend.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanBasicSend.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanBlackList.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanBlackList.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanBlackList.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanBlackList.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanChannelRestricted.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanChannelRestricted.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanChannelRestricted.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanChannelRestricted.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeChannel.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeChannel.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeChannel.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeChannel.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeInterceptor.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeInterceptor.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeInterceptor.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeInterceptor.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeSmsDao.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeSmsDao.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeSmsDao.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanCustomizeSmsDao.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanSms4jFullFunctions.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanSms4jFullFunctions.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanSms4jFullFunctions.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanSms4jFullFunctions.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanSpanRestricted.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanSpanRestricted.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/ConfigBeanSpanRestricted.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/ConfigBeanSpanRestricted.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/YamlBasicSend.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/YamlBasicSend.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/YamlBasicSend.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/YamlBasicSend.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/YamlCustomizeChannel.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/YamlCustomizeChannel.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/YamlCustomizeChannel.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/YamlCustomizeChannel.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/YamlCustomizeInterceptor.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/YamlCustomizeInterceptor.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/YamlCustomizeInterceptor.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/YamlCustomizeInterceptor.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/YamlCustomizeSmsDao.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/YamlCustomizeSmsDao.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/YamlCustomizeSmsDao.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/YamlCustomizeSmsDao.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/YamlFullFunctions.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/YamlFullFunctions.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/demo/YamlFullFunctions.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/demo/YamlFullFunctions.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEConfigBeanBlackListValidateTest.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEConfigBeanBlackListValidateTest.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEConfigBeanBlackListValidateTest.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEConfigBeanBlackListValidateTest.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEConfigBeanMultiChannelAllValidateTest.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEConfigBeanMultiChannelAllValidateTest.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEConfigBeanMultiChannelAllValidateTest.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEConfigBeanMultiChannelAllValidateTest.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEConfigBeanParamValidateTest.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEConfigBeanParamValidateTest.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEConfigBeanParamValidateTest.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEConfigBeanParamValidateTest.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEConfigBeanSendsTest.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEConfigBeanSendsTest.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEConfigBeanSendsTest.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEConfigBeanSendsTest.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEConfigBeanSimpleChannelAllValidateTest.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEConfigBeanSimpleChannelAllValidateTest.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEConfigBeanSimpleChannelAllValidateTest.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEConfigBeanSimpleChannelAllValidateTest.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEYmlBlackListValidateTest.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEYmlBlackListValidateTest.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEYmlBlackListValidateTest.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEYmlBlackListValidateTest.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEYmlMultiChannelAllValidateTest.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEYmlMultiChannelAllValidateTest.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEYmlMultiChannelAllValidateTest.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEYmlMultiChannelAllValidateTest.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEYmlParamValidateTest.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEYmlParamValidateTest.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEYmlParamValidateTest.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEYmlParamValidateTest.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEYmlSendsTest.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEYmlSendsTest.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEYmlSendsTest.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEYmlSendsTest.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEYmlSimpleChannelAllValidateTest.java b/sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEYmlSimpleChannelAllValidateTest.java
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/java/org/dromara/sms4j/test/SEYmlSimpleChannelAllValidateTest.java
rename to sms4j-example/JavaSE/src/main/java/org/dromara/sms4j/test/SEYmlSimpleChannelAllValidateTest.java
diff --git a/sms4j-example/JavaSE-Demo/src/main/resources/sms4j.yml b/sms4j-example/JavaSE/src/main/resources/sms4j.yml
similarity index 100%
rename from sms4j-example/JavaSE-Demo/src/main/resources/sms4j.yml
rename to sms4j-example/JavaSE/src/main/resources/sms4j.yml
diff --git a/sms4j-example/SpringBoot/SpringBootYamlFile/pom.xml b/sms4j-example/SpringBoot/SpringBootYamlFile/pom.xml
new file mode 100644
index 00000000..ed0104eb
--- /dev/null
+++ b/sms4j-example/SpringBoot/SpringBootYamlFile/pom.xml
@@ -0,0 +1,17 @@
+
+
+ 4.0.0
+
+
+ org.dromara.sms4j
+ SpringBoot
+ 1.0-SNAPSHOT
+
+
+ org.dromara.sms4j
+ SpringBootYamlFile
+ 1.0-SNAPSHOT
+
+
\ No newline at end of file
diff --git a/sms4j-example/SpringBoot/SpringbootReadConfig/pom.xml b/sms4j-example/SpringBoot/SpringbootReadConfig/pom.xml
new file mode 100644
index 00000000..0261ee1d
--- /dev/null
+++ b/sms4j-example/SpringBoot/SpringbootReadConfig/pom.xml
@@ -0,0 +1,18 @@
+
+
+ 4.0.0
+
+
+ org.dromara.sms4j
+ SpringBoot
+ 1.0-SNAPSHOT
+
+
+ org.dromara.sms4j
+ SpringbootReadConfig
+ 1.0-SNAPSHOT
+
+
+
\ No newline at end of file
diff --git a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/acct/BootSms4jTestByReadConfig.java b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/acct/BootSms4jTestByReadConfig.java
deleted file mode 100644
index 56e37293..00000000
--- a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/acct/BootSms4jTestByReadConfig.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.dromara.sms4j.acct;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.ComponentScan;
-
-@SpringBootApplication
-@ComponentScan(basePackages = {"org.dromara.sms4j.source"})
-public class BootSms4jTestByReadConfig {
-
- public static void main(String[] args) {
- SpringApplication.run(BootSms4jTestByReadConfig.class, args);
-
- }
-
-}
diff --git a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/EarlyPostProcessor.java b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/EarlyPostProcessor.java
deleted file mode 100644
index c2088dbd..00000000
--- a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/EarlyPostProcessor.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.dromara.sms4j.source;
-
-import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
-import org.springframework.stereotype.Component;
-import sms4j.local.a.AFactory;
-import sms4j.local.b.BFactory;
-import sms4j.local.c.CFactory;
-
-@Component
-public class EarlyPostProcessor implements BeanFactoryPostProcessor {
- @Override
- public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
- // 注入工厂实例
- ProviderFactoryHolder.registerFactory(new AFactory());
- ProviderFactoryHolder.registerFactory(new BFactory());
- ProviderFactoryHolder.registerFactory(new CFactory());
- }
-}
diff --git a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/Load.java b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/Load.java
deleted file mode 100644
index 27dc0482..00000000
--- a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/Load.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.dromara.sms4j.source;
-
-import org.dromara.sms4j.api.dao.SmsDao;
-import org.dromara.sms4j.core.factory.SmsFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.event.ApplicationContextEvent;
-import org.springframework.context.event.EventListener;
-import sms4j.dao.MySmsDao;
-import sms4j.interceptor.MyIntercepterStrategy;
-import sms4j.interceptor.MyInterceptor;
-
-@Configuration
-public class Load {
-
-
- @Bean
- public MyIntercepterStrategy myIntercepterStrategy(){
- return new MyIntercepterStrategy();
- }
-
- @Bean
- public MyInterceptor myInterceptor(){
- return new MyInterceptor();
- }
-
- @Bean
- public SmsDao smsDao(){
- return new MySmsDao();
- }
-
-}
diff --git a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/MyConfig.java b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/MyConfig.java
deleted file mode 100644
index 30311f6b..00000000
--- a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/MyConfig.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.dromara.sms4j.source;
-
-import org.dromara.sms4j.core.datainterface.SmsReadConfig;
-import org.dromara.sms4j.core.factory.SmsFactory;
-import org.dromara.sms4j.provider.config.BaseConfig;
-import org.springframework.context.event.ContextRefreshedEvent;
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Component;
-import sms4j.local.a.AConfig;
-import sms4j.local.b.BConfig;
-import sms4j.local.b.BFactory;
-import sms4j.local.c.CConfig;
-import sms4j.local.c.CFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Component
-public class MyConfig implements SmsReadConfig {
-
- @EventListener
- public void init(ContextRefreshedEvent event){
- // 创建SmsBlend 短信实例
- SmsFactory.createSmsBlend(this,"在配置中定义的configId");
- }
- @Override
- public BaseConfig getSupplierConfig(String configId) {
- // 服务商2
- BConfig bConfig = new BConfig();
- bConfig.setMaximum(5);
- bConfig.setConfigId("b1");
- return bConfig;
- }
-
- @Override
- public List getSupplierConfigList() {
- List configs = new ArrayList();
-
- // 服务商1
- CConfig cConfig = new CConfig();
- cConfig.setConfigId("c1");
- cConfig.setMaximum(5);
- configs.add(cConfig);
-
-
- // 服务商3
- AConfig aConfig = new AConfig();
- aConfig.setMaximum(5);
- aConfig.setConfigId("a1");
- configs.add(aConfig);
-
- // 服务商3
- AConfig aConfig1 = new AConfig();
- aConfig1.setMaximum(5);
- aConfig1.setConfigId("a2");
- configs.add(aConfig1);
- return configs;
- }
-}
diff --git a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/ReLoadConfig.java b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/ReLoadConfig.java
deleted file mode 100644
index 763436c4..00000000
--- a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/source/ReLoadConfig.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.dromara.sms4j.source;
-
-import org.dromara.sms4j.core.datainterface.SmsReadConfig;
-import org.dromara.sms4j.core.factory.SmsFactory;
-import org.dromara.sms4j.provider.config.BaseConfig;
-import org.springframework.context.event.ContextRefreshedEvent;
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Component;
-import sms4j.local.a.AConfig;
-import sms4j.local.b.BConfig;
-import sms4j.local.b.BFactory;
-import sms4j.local.c.CConfig;
-import sms4j.local.c.CFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ReLoadConfig implements SmsReadConfig {
- @EventListener
- public void init(ContextRefreshedEvent event){
- // 创建SmsBlend 短信实例
- SmsFactory.createSmsBlend(this,"在配置中定义的configId");
- }
- @Override
- public BaseConfig getSupplierConfig(String configId) {
- // 服务商2
-
- AConfig aConfig1 = new AConfig();
- aConfig1.setMaximum(5);
- aConfig1.setConfigId("b1");
- return aConfig1;
- }
-
- @Override
- public List getSupplierConfigList() {
- List configs = new ArrayList();
-
- // 服务商1
- CConfig cConfig = new CConfig();
- cConfig.setConfigId("a1");
- cConfig.setMaximum(5);
- configs.add(cConfig);
- CFactory cFactory = new CFactory();
-
-
- BFactory bFactory = new BFactory();
-
- // 服务商3
- AConfig aConfig = new AConfig();
- aConfig.setMaximum(5);
- aConfig.setConfigId("c1");
- configs.add(aConfig);
-
-
- BConfig bConfig = new BConfig();
- bConfig.setMaximum(5);
- bConfig.setConfigId("a2");
- configs.add(bConfig);
- return configs;
- }
-}
\ No newline at end of file
diff --git a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/test/BootConfigBlackListValidateConfig.java b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/test/BootConfigBlackListValidateConfig.java
new file mode 100644
index 00000000..7462a0c7
--- /dev/null
+++ b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/test/BootConfigBlackListValidateConfig.java
@@ -0,0 +1,68 @@
+package org.dromara.sms4j.test;
+
+import org.dromara.sms4j.core.datainterface.SmsBlendsSelectedConfig;
+import org.dromara.sms4j.core.factory.SmsFactory;
+import org.dromara.sms4j.provider.config.BaseConfig;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.context.event.EventListener;
+
+
+import sms4j.dao.MySmsDao;
+import sms4j.interceptor.MyIntercepterStrategy;
+import sms4j.interceptor.MyInterceptor;
+import sms4j.local.a.AConfig;
+import sms4j.local.a.AFactory;
+
+// SmsReadConfig 是一个存在但是未来可能被删除的一个接口,理想状态是使用 【SmsBlendsBeanConfig、SmsBlendsSelectedConfig】 SmsReadConfig正是继承了前面提到的两个接口
+// 这里为了只用一个类配置以此测试演示,使用中可以分开配置不用都写在一起
+@Configuration
+public class BootConfigBlackListValidateConfig implements SmsBlendsSelectedConfig {
+
+ //自定义渠道工厂
+ @Bean
+ public AFactory myFactory() {
+ return new AFactory();
+ }
+
+ //自定义拦截器
+ @Bean
+ public MyInterceptor myInterceptor() {
+ return new MyInterceptor();
+ }
+
+ //自定义拦截器策略
+ @Bean
+ public MyIntercepterStrategy myIntercepterStrategy() {
+ return new MyIntercepterStrategy();
+ }
+
+ //自定义Dao
+ @Bean
+ public MySmsDao mySmsDao() {
+ return MySmsDao.getInstance();
+ }
+
+ @Override
+ public BaseConfig getSupplierConfig(String configId) {
+ // 服务商渠道配置
+ // 服务商
+ AConfig aConfig = new AConfig();
+ if ("a1".equals(configId)){
+ aConfig.setMaximum(5);
+ aConfig.setConfigId("a1");
+ }
+ if ("a2".equals(configId)){
+ aConfig.setMaximum(5);
+ aConfig.setConfigId("a2");
+ }
+ return aConfig;
+ }
+
+ @EventListener
+ //不是非要用监听器,有无数种方法,这里就是介绍这个SmsBlendsSelectedConfig 需要你在本类加载之后手动createSmsBlend选择使用那一个配置
+ public void whenYouAppStarted(ContextRefreshedEvent event){
+ SmsFactory.createSmsBlend(this,"a1");
+ }
+}
diff --git a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/test/BootConfigBlackListValidateTest.java b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/test/BootConfigBlackListValidateTest.java
new file mode 100644
index 00000000..f0c282d1
--- /dev/null
+++ b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/java/org/dromara/sms4j/test/BootConfigBlackListValidateTest.java
@@ -0,0 +1,16 @@
+package org.dromara.sms4j.test;
+
+import org.dromara.sms4j.test.validate.BlackListValidate;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class BootConfigBlackListValidateTest {
+
+ public static void main(String[] args) {
+ SpringApplication.run(BootConfigBlackListValidateTest.class, args);
+
+ BlackListValidate blackListValidate = new BlackListValidate("a","11111111111");
+ blackListValidate.test();
+ }
+}
diff --git a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/resources/application.yml b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/resources/application.yml
index ae763b76..8fc9b069 100644
--- a/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/resources/application.yml
+++ b/sms4j-example/SpringBoot/SpringbootReadConfig/src/main/resources/application.yml
@@ -1,7 +1,9 @@
sms:
# 标注从yml读取配置
config-type: interface
- #restricted: true
+ # 是否开启拦截
+ restricted: true
+ # 账户发送上限
account-max: 4
-
+ # 分钟发送上限
minute-max: 3
diff --git a/sms4j-example/SpringBoot/pom.xml b/sms4j-example/SpringBoot/pom.xml
new file mode 100644
index 00000000..bd885233
--- /dev/null
+++ b/sms4j-example/SpringBoot/pom.xml
@@ -0,0 +1,51 @@
+
+
+ 4.0.0
+
+
+ org.dromara.sms4j
+ sms4j-example
+ 1.0-SNAPSHOT
+
+ pom
+
+ SpringbootReadConfig
+ SpringBootYamlFile
+
+
+ SpringBoot
+ 1.0-SNAPSHOT
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring.boot.version}
+ pom
+ import
+
+
+ org.dromara.sms4j
+ sms4j-spring-boot-starter
+ ${sms4j.version}
+
+
+ org.springframework.boot
+ spring-boot-starter
+ ${spring.boot.version}
+
+
+ org.dromara.sms4j
+ TestCase
+ 1.0-SNAPSHOT
+
+
+ org.dromara.sms4j
+ Customize
+ 1.0-SNAPSHOT
+
+
+
\ No newline at end of file
diff --git a/sms4j-example/样例结构.MD b/sms4j-example/样例结构.MD
index f258d710..23507062 100644
--- a/sms4j-example/样例结构.MD
+++ b/sms4j-example/样例结构.MD
@@ -1,7 +1,7 @@
# 项目结构
* sms4j-example
* [Component](Component) 基础依赖,包括测试案例和自定义的相关内容
- * [Customize](Component%2FCustomize) sms4j扩展的自定义的相关内容
+ * [Customize](Component%2FCustomize) sms4j扩展的自定义案例的相关内容
* 自定义SmsDao实现 [dao](Component%2FCustomize%2Fsrc%2Fmain%2Fjava%2Fsms4j%2Fdao)
* 自定义拦截器、拦截器策略实现 [interceptor](Component%2FCustomize%2Fsrc%2Fmain%2Fjava%2Fsms4j%2Finterceptor)
* 自定义厂商实现 [local](Component%2FCustomize%2Fsrc%2Fmain%2Fjava%2Fsms4j%2Flocal)
diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SmsBlendsInitializer.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SmsBlendsInitializer.java
index c6085db4..2fac0ad3 100644
--- a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SmsBlendsInitializer.java
+++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SmsBlendsInitializer.java
@@ -90,6 +90,7 @@ public class SmsBlendsInitializer extends AbstractInitalizer {
//SmsBlendsBeanConfig接口实现类的配置信息处理
for (SmsBlendsBeanConfig beanConfig : beanConfigs) {
SmsFactory.createSmsBlend(beanConfig);
+
}
break;
}