移除报错的ReflectUtil更换为hutool的BeanUtil.beanToMap

This commit is contained in:
handy 2023-07-20 15:11:34 +08:00
parent b8cee6d829
commit 1c2c730f05
2 changed files with 22 additions and 53 deletions

View File

@ -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<String, String> getValues(SupplierConfig parameter) {
try {
Map<String ,String> 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());
}
}
}

View File

@ -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
* <p> 自定义的一个平滑加权负载服务可以用于存放多个短信实现负载
*
* @author :Wind
* 2023/4/21 20:49
**/
@ -36,23 +35,25 @@ public class SmsLoad {
}
/**
* addLoadServer
* addLoadServer
* <p> 添加服务及其权重
* <p>添加权重应注意不要把某个权重设置的与其他权重相差过大否则容易出现无法负载单一选择的情况
*
* @param LoadServer 短信实现
* @param weight 权重
* @param weight 权重
* @author :Wind
*/
*/
public void addLoadServer(SmsBlend LoadServer, int weight) {
LoadServers.add(new LoadServer(LoadServer, weight, weight));
}
/**
* removeLoadServer
* removeLoadServer
* <p>移除短信服务
* @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
* <p>根据负载算法获取一个可获取到的短信服务这里获取到的服务必然是addLoadServer方法中添加过的服务不会凭空出现
*
* @return SmsBlend 短信实现
* @author :Wind
*/
*/
public synchronized SmsBlend getLoadServer() {
int totalWeight = 0;
LoadServer selectedLoadServer = null;
@ -91,19 +93,22 @@ public class SmsLoad {
}
/**
* starConfig
* starConfig
* <p> 创建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<String, Object> 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;
}
}