项目启动时读取一次数据库参数,以后直接使用
新建一个InitDataListener类,实现InitializingBean, ServletContextAware,变量声明为静态全局的,直接使用就可以
package com.AAA;
import com.AAA.sys.service.SysConfigService;
import com.AAA.util.StringUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;
import javax.servlet.ServletContext;
import java.util.Map;
@Component
public class InitDataListener implements InitializingBean, ServletContextAware {
public static String PARAM_KEY;
public static String PARAM_VALUE;
@Autowired
SysConfigService configService;
public static String getParamKey() {
return PARAM_KEY;
}
public static String getParamValue() {
return PARAM_VALUE;
}
@Override
public void afterPropertiesSet() throws Exception {
}
@Override
public void setServletContext(ServletContext servletContext) {
Map resMap = configService.getMinioMap(null);
PARAM_KEY = StringUtils.getStringByObj(resMap.get("PARAM_KEY"));
PARAM_VALUE = StringUtils.getStringByObj(resMap.get("PARAM_VALUE"));
}
}
其他 看一下 接口 层
package com.AAA.sys.service;
import java.util.Map;
public interface SysConfigService {
Map<String, String> getMinioMap(Map map );
}
package com.AAA.sys.service.impl;
import com.AAA.base.util.MD5Util;
import com.AAA.entity.SysConfig;
import com.AAA.share.dao.SysConfigDao;
import com.AAA.sys.service.SysConfigService;
import com.AAA.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@Service
public class SysConfigServiceImpl implements SysConfigService {
@Autowired
private SysConfigDao sysConfigDao;
@Override
public Map<String, String> getMinioMap(Map map) {
return sysConfigDao.getMinioMap(map);
}
}
//DAO
package com.AAA.share.dao;
import com.AAA.base.dao.GenericDao;
import com.AAA.entity.SysConfig;
import java.util.List;
import java.util.Map;
public interface SysConfigDao extends GenericDao<SysConfig, Integer> {
Map<String, String> getMinioMap(Map map );
}
//DAO 实现
package com.AAA.share.dao.impl;
import com.AAA.base.dao.impl.GenericDaoHibernate;
import com.AAA.entity.SysConfig;
import com.AAA.share.dao.SysConfigDao;
import com.AAA.util.StringUtils;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Repository
public class SysConfigDaoImpl extends GenericDaoHibernate<SysConfig, Integer> implements SysConfigDao {
public SysConfigDaoImpl() {
super(SysConfig.class);
}
@Override
public Map<String, String> getMinioMap(Map map ) {
Map resMap = new HashMap();
String sql = "SELECT PARAM_KEY,PARAM_VALUE FROM sys_params WHERE PARAM_GROUP='MINIO_CONFIG' or PARAM_GROUP='UPLOAD_CONFIG' ";
List myList = findBySql(sql, null);
if (myList.size() > 0) {
for (int i = 0; i < myList.size(); i++) {
Map map_tem = (Map) myList.get(i);
String PARAM_KEY = StringUtils.getStringByObj(map_tem.get("PARAM_KEY"));
String PARAM_VALUE = StringUtils.getStringByObj(map_tem.get("PARAM_VALUE"));
resMap.put(PARAM_KEY,PARAM_VALUE);
}
}
return resMap;
}
}
最后用的时候直接用类名就可以调用了
注意:此作用是用于查询数据库中配置信息的,且只在启动的时候查一次,如果该参数经常修改建议不要用这种方法。如果数据库配置修改了,一定要重新启动该项目才能生效
有疑问 可联系我
java技术交流 QQ 群:201455739