mirror of
https://gitee.com/dromara/sms4j.git
synced 2025-12-06 08:58:38 +08:00
修改solon适配中的错误,去除过时的引用
This commit is contained in:
parent
d851aeefd9
commit
31d9173792
10
pom.xml
10
pom.xml
@ -54,7 +54,7 @@
|
|||||||
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
<spring.boot.version>2.7.12</spring.boot.version>
|
<spring.boot.version>2.7.15</spring.boot.version>
|
||||||
<solon.version>2.5.4</solon.version>
|
<solon.version>2.5.4</solon.version>
|
||||||
<redisson.version>3.17.0</redisson.version>
|
<redisson.version>3.17.0</redisson.version>
|
||||||
<jdcloud.version>1.3.3</jdcloud.version>
|
<jdcloud.version>1.3.3</jdcloud.version>
|
||||||
@ -118,14 +118,6 @@
|
|||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- redis 缓存操作 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
|
||||||
<version>${spring.boot.version}</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 京东云短信依赖 -->
|
<!-- 京东云短信依赖 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.jdcloud.sdk</groupId>
|
<groupId>com.jdcloud.sdk</groupId>
|
||||||
|
|||||||
@ -26,18 +26,5 @@
|
|||||||
<groupId>org.dromara.sms4j</groupId>
|
<groupId>org.dromara.sms4j</groupId>
|
||||||
<artifactId>sms4j-core</artifactId>
|
<artifactId>sms4j-core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.redisson</groupId>
|
|
||||||
<artifactId>redisson</artifactId>
|
|
||||||
<version>${redisson.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.noear</groupId>
|
|
||||||
<artifactId>solon-test</artifactId>
|
|
||||||
<version>${solon.version}</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@ -0,0 +1,103 @@
|
|||||||
|
package org.dromara.sms4j.solon.config;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.sms4j.aliyun.config.AlibabaFactory;
|
||||||
|
import org.dromara.sms4j.api.SmsBlend;
|
||||||
|
import org.dromara.sms4j.api.universal.SupplierConfig;
|
||||||
|
import org.dromara.sms4j.cloopen.config.CloopenFactory;
|
||||||
|
import org.dromara.sms4j.comm.constant.Constant;
|
||||||
|
import org.dromara.sms4j.comm.utils.SmsUtils;
|
||||||
|
import org.dromara.sms4j.core.factory.SmsFactory;
|
||||||
|
import org.dromara.sms4j.core.proxy.SmsInvocationHandler;
|
||||||
|
import org.dromara.sms4j.ctyun.config.CtyunFactory;
|
||||||
|
import org.dromara.sms4j.emay.config.EmayFactory;
|
||||||
|
import org.dromara.sms4j.huawei.config.HuaweiFactory;
|
||||||
|
import org.dromara.sms4j.jdcloud.config.JdCloudFactory;
|
||||||
|
import org.dromara.sms4j.netease.config.NeteaseFactory;
|
||||||
|
import org.dromara.sms4j.provider.config.SmsConfig;
|
||||||
|
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
||||||
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
|
import org.dromara.sms4j.solon.aop.SolonRestrictedProcess;
|
||||||
|
import org.dromara.sms4j.tencent.config.TencentFactory;
|
||||||
|
import org.dromara.sms4j.unisms.config.UniFactory;
|
||||||
|
import org.dromara.sms4j.yunpian.config.YunPianFactory;
|
||||||
|
import org.dromara.sms4j.zhutong.config.ZhutongFactory;
|
||||||
|
import org.noear.solon.core.AppContext;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class SmsBlendsInitializer {
|
||||||
|
private List<BaseProviderFactory<? extends SmsBlend, ? extends SupplierConfig>> factoryList;
|
||||||
|
|
||||||
|
private final SmsConfig smsConfig;
|
||||||
|
private final Map<String, Map<String, Object>> blends;
|
||||||
|
private final AppContext context;
|
||||||
|
|
||||||
|
public SmsBlendsInitializer(List<BaseProviderFactory<? extends SmsBlend, ? extends SupplierConfig>> factoryList,
|
||||||
|
SmsConfig smsConfig,
|
||||||
|
Map<String, Map<String, Object>> blends,
|
||||||
|
AppContext context
|
||||||
|
){
|
||||||
|
this.factoryList = factoryList;
|
||||||
|
this.smsConfig = smsConfig;
|
||||||
|
this.blends = blends;
|
||||||
|
this.context = context;
|
||||||
|
onApplicationEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onApplicationEvent() {
|
||||||
|
this.registerDefaultFactory();
|
||||||
|
// 注册短信对象工厂
|
||||||
|
ProviderFactoryHolder.registerFactory(factoryList);
|
||||||
|
// 解析供应商配置
|
||||||
|
for(String configId : blends.keySet()) {
|
||||||
|
Map<String, Object> configMap = blends.get(configId);
|
||||||
|
Object supplierObj = configMap.get(Constant.SUPPLIER_KEY);
|
||||||
|
String supplier = supplierObj == null ? "" : String.valueOf(supplierObj);
|
||||||
|
supplier = StrUtil.isEmpty(supplier) ? configId : supplier;
|
||||||
|
BaseProviderFactory<SmsBlend, SupplierConfig> providerFactory = (BaseProviderFactory<SmsBlend, SupplierConfig>) ProviderFactoryHolder.requireForSupplier(supplier);
|
||||||
|
if(providerFactory == null) {
|
||||||
|
log.warn("创建\"{}\"的短信服务失败,未找到供应商为\"{}\"的服务", configId, supplier);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
configMap.put("config-id", configId);
|
||||||
|
SmsUtils.replaceKeysSeperator(configMap, "-", "_");
|
||||||
|
JSONObject configJson = new JSONObject(configMap);
|
||||||
|
SupplierConfig supplierConfig = JSONUtil.toBean(configJson, providerFactory.getConfigClass());
|
||||||
|
if(Boolean.TRUE.equals(smsConfig.getRestricted())) {
|
||||||
|
SmsFactory.createRestrictedSmsBlend(supplierConfig);
|
||||||
|
} else {
|
||||||
|
SmsFactory.createSmsBlend(supplierConfig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//注册短信拦截实现
|
||||||
|
SmsInvocationHandler.setRestrictedProcess(new SolonRestrictedProcess(context));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 注册默认工厂实例
|
||||||
|
*/
|
||||||
|
private void registerDefaultFactory() {
|
||||||
|
ProviderFactoryHolder.registerFactory(AlibabaFactory.instance());
|
||||||
|
ProviderFactoryHolder.registerFactory(CloopenFactory.instance());
|
||||||
|
ProviderFactoryHolder.registerFactory(CtyunFactory.instance());
|
||||||
|
ProviderFactoryHolder.registerFactory(EmayFactory.instance());
|
||||||
|
ProviderFactoryHolder.registerFactory(HuaweiFactory.instance());
|
||||||
|
ProviderFactoryHolder.registerFactory(NeteaseFactory.instance());
|
||||||
|
ProviderFactoryHolder.registerFactory(TencentFactory.instance());
|
||||||
|
ProviderFactoryHolder.registerFactory(UniFactory.instance());
|
||||||
|
ProviderFactoryHolder.registerFactory(YunPianFactory.instance());
|
||||||
|
ProviderFactoryHolder.registerFactory(ZhutongFactory.instance());
|
||||||
|
if(SmsUtils.isClassExists("com.jdcloud.sdk.auth.CredentialsProvider")) {
|
||||||
|
ProviderFactoryHolder.registerFactory(JdCloudFactory.instance());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,11 +1,15 @@
|
|||||||
package org.dromara.sms4j.solon.config;
|
package org.dromara.sms4j.solon.config;
|
||||||
|
|
||||||
import org.dromara.sms4j.aliyun.config.AlibabaConfig;
|
import org.dromara.sms4j.aliyun.config.AlibabaConfig;
|
||||||
|
import org.dromara.sms4j.api.SmsBlend;
|
||||||
import org.dromara.sms4j.cloopen.config.CloopenConfig;
|
import org.dromara.sms4j.cloopen.config.CloopenConfig;
|
||||||
import org.dromara.sms4j.ctyun.config.CtyunConfig;
|
import org.dromara.sms4j.ctyun.config.CtyunConfig;
|
||||||
import org.dromara.sms4j.emay.config.EmayConfig;
|
import org.dromara.sms4j.emay.config.EmayConfig;
|
||||||
import org.dromara.sms4j.huawei.config.HuaweiConfig;
|
import org.dromara.sms4j.huawei.config.HuaweiConfig;
|
||||||
import org.dromara.sms4j.jdcloud.config.JdCloudConfig;
|
import org.dromara.sms4j.jdcloud.config.JdCloudConfig;
|
||||||
|
import org.dromara.sms4j.provider.config.SmsConfig;
|
||||||
|
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
||||||
|
import org.dromara.sms4j.provider.factory.BeanFactory;
|
||||||
import org.dromara.sms4j.tencent.config.TencentConfig;
|
import org.dromara.sms4j.tencent.config.TencentConfig;
|
||||||
import org.dromara.sms4j.unisms.config.UniConfig;
|
import org.dromara.sms4j.unisms.config.UniConfig;
|
||||||
import org.dromara.sms4j.yunpian.config.YunpianConfig;
|
import org.dromara.sms4j.yunpian.config.YunpianConfig;
|
||||||
@ -15,6 +19,10 @@ import org.noear.solon.annotation.Configuration;
|
|||||||
import org.noear.solon.annotation.Inject;
|
import org.noear.solon.annotation.Inject;
|
||||||
import org.noear.solon.core.AppContext;
|
import org.noear.solon.core.AppContext;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* smsConfig参数意义为确保注入时smsConfig已经存在
|
* smsConfig参数意义为确保注入时smsConfig已经存在
|
||||||
*/
|
*/
|
||||||
@ -29,61 +37,16 @@ public class SupplierConfig {
|
|||||||
context.cfg().getProp(prefix).bindTo(obj);
|
context.cfg().getProp(prefix).bindTo(obj);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** 阿里差异化配置*/
|
|
||||||
@Bean
|
@Bean
|
||||||
public AlibabaConfig alibabaConfig(){
|
protected Map<String, Map<String, Object>> blends(){
|
||||||
return injectObj("sms.alibaba", new AlibabaConfig());
|
return injectObj("sms.blends",new LinkedHashMap<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 华为差异化配置*/
|
|
||||||
@Bean
|
|
||||||
public HuaweiConfig huaweiConfig(){
|
|
||||||
return injectObj("sms.huawei", new HuaweiConfig());
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 云片短信差异化配置*/
|
|
||||||
@Bean
|
@Bean
|
||||||
public YunpianConfig yunpianConfig(){
|
protected SmsBlendsInitializer smsBlendsInitializer(List<BaseProviderFactory<? extends SmsBlend, ? extends org.dromara.sms4j.api.universal.SupplierConfig>> factoryList,
|
||||||
return injectObj("sms.yunpian", new YunpianConfig());
|
SmsConfig smsConfig,
|
||||||
}
|
Map<String, Map<String, Object>> blends){
|
||||||
|
return new SmsBlendsInitializer(factoryList,smsConfig,blends,context);
|
||||||
/** 合一短信差异化配置*/
|
|
||||||
@Bean
|
|
||||||
public UniConfig uniConfig(){
|
|
||||||
return injectObj("sms.uni", new UniConfig());
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 腾讯短信差异化配置*/
|
|
||||||
@Bean
|
|
||||||
public TencentConfig tencentConfig(){
|
|
||||||
return injectObj("sms.tencent", new TencentConfig());
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 京东云短信差异化配置 */
|
|
||||||
@Bean
|
|
||||||
public JdCloudConfig jdCloudConfig(){
|
|
||||||
return injectObj("sms.jdcloud", new JdCloudConfig());
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 容联云短信差异化配置 */
|
|
||||||
@Bean
|
|
||||||
public CloopenConfig cloopenConfig(){
|
|
||||||
return injectObj("sms.cloopen", new CloopenConfig());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 亿美软通短信差异化配置
|
|
||||||
*/
|
|
||||||
@Bean
|
|
||||||
public EmayConfig emayConfig(){
|
|
||||||
return injectObj("sms.emay", new EmayConfig());
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 天翼云短信差异化配置 */
|
|
||||||
@Bean
|
|
||||||
public CtyunConfig ctyunConfig(){
|
|
||||||
return injectObj("sms.ctyun", new CtyunConfig());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,78 +0,0 @@
|
|||||||
package org.dromara.sms4j.solon.utils;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.dromara.sms4j.api.dao.SmsDao;
|
|
||||||
import org.noear.solon.Solon;
|
|
||||||
import org.redisson.api.RedissonClient;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
public class SmsRedisDaoImpl implements SmsDao {
|
|
||||||
|
|
||||||
private RedissonClient redisTemplate;
|
|
||||||
|
|
||||||
public SmsRedisDaoImpl() {
|
|
||||||
Thread t = new Thread(()->{
|
|
||||||
//如果获取到的bean为null则等待后重试,最多重试五次
|
|
||||||
for(int i = 0; i < 5 ;i++){
|
|
||||||
RedissonClient bean = Solon.context().getBean(RedissonClient.class);
|
|
||||||
if (Objects.isNull(bean)){
|
|
||||||
try {
|
|
||||||
Thread.sleep(100);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
redisTemplate = bean;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
t.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
public SmsRedisDaoImpl(RedissonClient redisTemplate) {
|
|
||||||
this.redisTemplate = redisTemplate;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void set(String key, Object value, long cacheTime) {
|
|
||||||
redisTemplate.getBucket(key).set(value, cacheTime, TimeUnit.SECONDS);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void set(String key, Object value) {
|
|
||||||
redisTemplate.getBucket(key).set(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object get(String key) {
|
|
||||||
return redisTemplate.getBucket(key).get();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>说明:将Map中的数据批量放置到redis中
|
|
||||||
* <p>
|
|
||||||
*
|
|
||||||
* @param valueMap 要放入的数据
|
|
||||||
* @name: multiSet
|
|
||||||
* @author :Wind
|
|
||||||
*/
|
|
||||||
public boolean multiSet(Map valueMap) {
|
|
||||||
try {
|
|
||||||
valueMap.forEach((key, val) -> redisTemplate.getBucket((String) key).set(val));
|
|
||||||
return true;
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error(e.toString());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clean() throws RuntimeException {
|
|
||||||
//TODO
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
package org.dromara.sms4j.demo;
|
|
||||||
|
|
||||||
import org.noear.solon.Solon;
|
|
||||||
import org.noear.solon.annotation.SolonMain;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author noear 2023/5/16 created
|
|
||||||
*/
|
|
||||||
@SolonMain
|
|
||||||
public class App {
|
|
||||||
public static void main(String[] args){
|
|
||||||
Solon.start(App.class, args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,87 +0,0 @@
|
|||||||
package org.dromara.sms4j.demo;
|
|
||||||
|
|
||||||
import org.noear.solon.Utils;
|
|
||||||
import org.noear.solon.annotation.Bean;
|
|
||||||
import org.noear.solon.annotation.Configuration;
|
|
||||||
import org.noear.solon.annotation.Inject;
|
|
||||||
import org.redisson.Redisson;
|
|
||||||
import org.redisson.api.RedissonClient;
|
|
||||||
import org.redisson.config.ClusterServersConfig;
|
|
||||||
import org.redisson.config.SingleServerConfig;
|
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author noear 2023/5/16 created
|
|
||||||
*/
|
|
||||||
@Configuration
|
|
||||||
public class Config {
|
|
||||||
@Bean
|
|
||||||
public RedissonClient redisInit(@Inject("${sms4j.redis}") Properties props) {
|
|
||||||
return build(props);
|
|
||||||
}
|
|
||||||
|
|
||||||
public RedissonClient build(Properties prop) {
|
|
||||||
String server_str = prop.getProperty("server");
|
|
||||||
String db_str = prop.getProperty("db");
|
|
||||||
String user_str = prop.getProperty("user");
|
|
||||||
String password_str = prop.getProperty("password");
|
|
||||||
|
|
||||||
|
|
||||||
int db = 0;
|
|
||||||
|
|
||||||
if (Utils.isNotEmpty(db_str)) {
|
|
||||||
db = Integer.parseInt(db_str);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 开始实例化 redissonClient
|
|
||||||
//
|
|
||||||
org.redisson.config.Config config = new org.redisson.config.Config();
|
|
||||||
|
|
||||||
if (server_str.contains(",")) {
|
|
||||||
//集群
|
|
||||||
ClusterServersConfig serverConfig = config.useClusterServers();
|
|
||||||
|
|
||||||
//注入一般配置
|
|
||||||
Utils.injectProperties(serverConfig, prop);
|
|
||||||
|
|
||||||
//设置关键配置
|
|
||||||
String[] address = resolveServers(server_str.split(","));
|
|
||||||
serverConfig.addNodeAddress(address)
|
|
||||||
.setUsername(user_str)
|
|
||||||
.setPassword(password_str);
|
|
||||||
} else {
|
|
||||||
//单例
|
|
||||||
SingleServerConfig serverConfig = config.useSingleServer();
|
|
||||||
|
|
||||||
//注入一般配置
|
|
||||||
Utils.injectProperties(serverConfig, prop);
|
|
||||||
|
|
||||||
//设置关键配置
|
|
||||||
String[] address = resolveServers(server_str);
|
|
||||||
serverConfig.setAddress(address[0])
|
|
||||||
.setUsername(user_str)
|
|
||||||
.setPassword(password_str)
|
|
||||||
.setDatabase(db);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Redisson.create(config);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String[] resolveServers(String... servers) {
|
|
||||||
String[] uris = new String[servers.length];
|
|
||||||
|
|
||||||
for (int i = 0; i < servers.length; i++) {
|
|
||||||
String sev = servers[i];
|
|
||||||
|
|
||||||
if (sev.contains("://")) {
|
|
||||||
uris[i] = sev;
|
|
||||||
} else {
|
|
||||||
uris[i] = "redis://" + sev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return uris;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
package org.dromara.sms4j.test;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.noear.solon.test.SolonJUnit4ClassRunner;
|
|
||||||
import org.noear.solon.test.SolonTest;
|
|
||||||
|
|
||||||
@RunWith(SolonJUnit4ClassRunner.class)
|
|
||||||
@SolonTest
|
|
||||||
public class Sms4jTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void uniSmsTest() {
|
|
||||||
// UniConfig build = UniConfig.builder()
|
|
||||||
// .signature("***")
|
|
||||||
// .accessKeyId("7Cr1***VJQ11Ap4***Mo7xmFg")
|
|
||||||
// .templateId("2001")
|
|
||||||
// .templateName("message")
|
|
||||||
// .isSimple(true)
|
|
||||||
// .build();
|
|
||||||
// SupplierFactory.setUniConfig(build);
|
|
||||||
// SmsResponse smsResponse = SmsFactory.createSmsBlend(SupplierType.UNI_SMS).sendMessage("175***65952", "123123");
|
|
||||||
// System.out.println(smsResponse);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -16,10 +16,6 @@
|
|||||||
<description>sms4j-spring-boot-starter</description>
|
<description>sms4j-spring-boot-starter</description>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.dromara.sms4j</groupId>
|
<groupId>org.dromara.sms4j</groupId>
|
||||||
|
|||||||
@ -12,11 +12,9 @@ import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
|||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.context.annotation.Primary;
|
|
||||||
import org.springframework.context.event.ContextRefreshedEvent;
|
import org.springframework.context.event.ContextRefreshedEvent;
|
||||||
import org.springframework.context.event.EventListener;
|
import org.springframework.context.event.EventListener;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.data.repository.query.Param;
|
|
||||||
|
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user