diff --git a/sms4j-core/src/main/java/org/dromara/sms4j/core/ReflectUtil.java b/sms4j-core/src/main/java/org/dromara/sms4j/core/ReflectUtil.java deleted file mode 100644 index c32cc7cd..00000000 --- a/sms4j-core/src/main/java/org/dromara/sms4j/core/ReflectUtil.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.dromara.sms4j.core; - -import org.dromara.sms4j.api.universal.SupplierConfig; -import org.dromara.sms4j.comm.exception.SmsBlendException; - -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; - -public class ReflectUtil { - - /** - * 反射获取接口对象的原类名 - */ - public static String getObjectName(SupplierConfig parameter) { - return parameter.getClass().getTypeName(); - } - - /** - * 将对象的属性和属性值变为map - * */ - public static Map getValues(SupplierConfig parameter) { - try { - Map map = new HashMap<>(); - Class clazz = Class.forName(getObjectName(parameter)); - Field[] declaredFields = clazz.getDeclaredFields(); - for (Field declaredField : declaredFields) { - declaredField.setAccessible(true); - map.put(declaredField.getName(), (String) declaredField.get(parameter)); - } - return map; - } catch (Exception e) { - throw new SmsBlendException(e.toString()); - } - } -} diff --git a/sms4j-core/src/main/java/org/dromara/sms4j/core/load/SmsLoad.java b/sms4j-core/src/main/java/org/dromara/sms4j/core/load/SmsLoad.java index 8255550e..68926aed 100644 --- a/sms4j-core/src/main/java/org/dromara/sms4j/core/load/SmsLoad.java +++ b/sms4j-core/src/main/java/org/dromara/sms4j/core/load/SmsLoad.java @@ -1,10 +1,8 @@ package org.dromara.sms4j.core.load; +import cn.hutool.core.bean.BeanUtil; import org.dromara.sms4j.api.SmsBlend; import org.dromara.sms4j.api.universal.SupplierConfig; -import org.dromara.sms4j.comm.config.BaseConfig; -import org.dromara.sms4j.core.ReflectUtil; -import org.dromara.sms4j.core.config.SupplierFactory; import org.dromara.sms4j.provider.base.BaseProviderFactory; import org.dromara.sms4j.provider.enumerate.SupplierType; @@ -16,6 +14,7 @@ import java.util.Map; /** * SmsLoad *

自定义的一个平滑加权负载服务,可以用于存放多个短信实现负载 + * * @author :Wind * 2023/4/21 20:49 **/ @@ -36,23 +35,25 @@ public class SmsLoad { } /** - * addLoadServer + * addLoadServer *

添加服务及其权重 *

添加权重应注意,不要把某个权重设置的与其他权重相差过大,否则容易出现无法负载,单一选择的情况 + * * @param LoadServer 短信实现 - * @param weight 权重 + * @param weight 权重 * @author :Wind - */ + */ public void addLoadServer(SmsBlend LoadServer, int weight) { LoadServers.add(new LoadServer(LoadServer, weight, weight)); } /** - * removeLoadServer + * removeLoadServer *

移除短信服务 - * @param LoadServer 要移除的服务 + * + * @param LoadServer 要移除的服务 * @author :Wind - */ + */ public void removeLoadServer(SmsBlend LoadServer) { for (int i = 0; i < LoadServers.size(); i++) { if (LoadServers.get(i).getSmsServer().equals(LoadServer)) { @@ -63,11 +64,12 @@ public class SmsLoad { } /** - * getLoadServer + * getLoadServer *

根据负载算法获取一个可获取到的短信服务,这里获取到的服务必然是addLoadServer方法中添加过的服务,不会凭空出现 + * * @return SmsBlend 短信实现 * @author :Wind - */ + */ public synchronized SmsBlend getLoadServer() { int totalWeight = 0; LoadServer selectedLoadServer = null; @@ -91,19 +93,22 @@ public class SmsLoad { } /** - * starConfig + * starConfig *

创建smsBlend并加入到负载均衡器 + * * @param supplierConfig 厂商配置 - * @param supplierType 厂商枚举 + * @param supplierType 厂商枚举 * @author :Wind - */ - public static void starConfig(SupplierConfig supplierConfig, SupplierType supplierType){ + */ + public static void starConfig(SupplierConfig supplierConfig, SupplierType supplierType) { BaseProviderFactory providerFactory = supplierType.getProviderFactory(); SmsBlend smsBlend = providerFactory.createMultitonSms(supplierConfig); - smsLoad.addLoadServer(smsBlend, Integer.parseInt(ReflectUtil.getValues(supplierConfig).get("weight"))); + Map supplierConfigMap = BeanUtil.beanToMap(supplierConfig); + Object weight = supplierConfigMap.getOrDefault("weight", 1); + smsLoad.addLoadServer(smsBlend, Integer.parseInt(weight.toString())); } - public static SmsLoad getBeanLoad(){ + public static SmsLoad getBeanLoad() { return smsLoad; } }