sms4j-solon-plugin: 优化 SupplierConfig 处理

This commit is contained in:
noear 2024-05-08 12:24:20 +08:00
parent a5f7ba37a4
commit 525166c102

View File

@ -9,6 +9,7 @@ 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.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -16,7 +17,7 @@ import java.util.Map;
/** /**
* smsConfig参数意义为确保注入时smsConfig已经存在 * smsConfig参数意义为确保注入时smsConfig已经存在
*/ */
@Condition(onProperty = "${sms.configType}=config_file") @Condition(onProperty = "${sms.configType}=yaml")
@Configuration @Configuration
public class SupplierConfig { public class SupplierConfig {
@Inject @Inject
@ -27,16 +28,25 @@ public class SupplierConfig {
context.cfg().getProp(prefix).bindTo(obj); context.cfg().getProp(prefix).bindTo(obj);
return obj; return obj;
} }
@Bean @Bean
protected Map<String, Map<String, Object>> blends(){ protected Map<String, Map<String, Object>> blends() {
return injectObj("sms.blends",new LinkedHashMap<>()); return injectObj("sms.blends", new LinkedHashMap<>());
} }
@Bean @Bean
protected SmsBlendsInitializer smsBlendsInitializer(List<BaseProviderFactory<? extends SmsBlend, ? extends org.dromara.sms4j.api.universal.SupplierConfig>> factoryList, protected SmsBlendsInitializer smsBlendsInitializer(List<BaseProviderFactory> factoryList,
SmsConfig smsConfig, SmsConfig smsConfig,
Map<String, Map<String, Object>> blends){ Map<String, Map<String, Object>> blends) {
return new SmsBlendsInitializer(factoryList,smsConfig,blends,context);
//todo: solon 不支持泛型的 List[Bean] 注入
List<BaseProviderFactory<? extends SmsBlend, ? extends org.dromara.sms4j.api.universal.SupplierConfig>> factoryList2 = new ArrayList<>(factoryList.size());
for (BaseProviderFactory factory : factoryList) {
factoryList2.add((BaseProviderFactory<? extends SmsBlend, ? extends org.dromara.sms4j.api.universal.SupplierConfig>) factory);
}
return new SmsBlendsInitializer(factoryList2, smsConfig, blends, context);
} }
} }