com.hn.config.HnConfigUtils Maven / Gradle / Ivy
package com.hn.config;
import cn.hutool.core.util.StrUtil;
import cn.hutool.db.Db;
import cn.hutool.db.Entity;
import cn.hutool.db.ds.simple.SimpleDataSource;
import cn.hutool.json.JSONUtil;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import org.springframework.core.env.Environment;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 描述:
* HnConfig配置文件 优先读取数据库配置
* 数据库
* HnConfigUtils.init(ds);
*
* spring配置文件
* HnConfigUtils.init(environment);
*
* 初始化方法
* springboot:
* {@code @Component}
* public class HnConfig {
* {@code @Autowired }
* private DataSource ds;
* {@code @PostConstruct }
* public void dataSource(){
* HnConfigUtils.init(ds);
* }
* }
*
* @author fei
*/
public class HnConfigUtils {
private static final Log log = LogFactory.get();
public static final String CONFIG_TABLE = "hn_config";
private static Map configMap = new HashMap(64);
private static Environment springEnvironment;
private HnConfigUtils() {}
/**
* 初始化数据
*
* @param ds {@link DataSource}
* @param tableName 配置数据表表名
*/
public static void init(DataSource ds, String tableName) {
try {
Db db = Db.use(ds);
List list = db.findAll(tableName);
for (Entity entity : list) {
String configKey = entity.getStr("config_key");
String configValue = entity.getStr("config_value");
configMap.put(configKey, configValue);
}
log.debug("hn_config配置读取:{}", JSONUtil.toJsonStr(configMap));
} catch (SQLException e) {
log.error("hn_config配置读取异常:{}", e.getMessage());
}
}
/**
* 初始化数据
*
* @param ds {@link DataSource}
*/
public static void init(DataSource ds) {
init(ds, CONFIG_TABLE);
}
/**
* 初始化数据
*
* @param environment spring 环境配置 {@link Environment}
*/
public static void init(Environment environment) {
springEnvironment = environment;
}
/**
* 初始化数据
*
* @param map 参数列表 {key:value}
*/
public static void init(Map map) {
configMap = map;
}
/**
* 初始化数据
*
* @param url 数据库连接
* @param username 用户名
* @param password 密码
*/
public static void init(String url, String username, String password) {
DataSource ds = new SimpleDataSource(url, username, password);
init(ds);
}
/**
* 初始化数据
*
* @param url 数据库连接
* @param username 用户名
* @param password 密码
* @param keyPwd 数据密钥
*/
public static void init(String url, String username, String password, String keyPwd) {
DataSource ds = new SimpleDataSource(url, username, password);
init(ds, keyPwd);
}
/**
* 获取配置信息
*
* @param key 配置key
* @return value
*/
public static String getConfig(String key) {
String val = configMap.get(key);
if (StrUtil.isBlank(val)) {
if (springEnvironment != null) {
try {
val = springEnvironment.getProperty(key);
configMap.put(key, val);
} catch (NoClassDefFoundError e) {
log.error("当前系统不在[spring]环境中");
}
}
}
return val;
}
/**
* 设置配置信息
*
* @param key 配置key
* @param value 配置value
*/
public static void setConfig(String key,String value) {
configMap.put(key,value);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy