直接上代码:
package com.wenzy.config; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import com.hundsun.wudadao.chengdudao.domain.system.SystemConfig; import com.hundsun.wudadao.chengdudao.service.system.SystemConfigManager; import com.hundsun.wudadao.chengdudao.service.system.impl.SystemConfigManagerImpl; public class config implements BeanFactoryAware{ private static BeanFactory beanFactory; private static Map<String,String> systemConfigMap = new HashMap<String,String>(); public static void loadSystemConfigData() { System.out.println("come in method2..."); SystemConfigManager systemConfigManager = (SystemConfigManager) beanFactory.getBean("systemConfigManager",SystemConfigManager.class);//关键的操作 System.out.println("success create bean..."); List<SystemConfig> configList = systemConfigManager.getAllSystemConfig(); //遍历数据库中的配置项 for (SystemConfig systemConfig : configList) { //如果状态为关闭,则使用默认值,并加载到缓存中;如果状态为开启,则使用保存的值 if(systemConfig.getState()==0){ systemConfigMap.put(systemConfig.getConfigKey(), systemConfig.getConfigDefaultValue()); } else if(systemConfig.getState()==1){ systemConfigMap.put(systemConfig.getConfigKey(), systemConfig.getConfigValue()); } else{ continue; } } } @Override public void setBeanFactory(BeanFactory arg0) throws BeansException { config.beanFactory = arg0; } } /*SystemConfigManager:是一个已经配置到Spring中的bean,也是作者煞费苦心想调用的对象 * 上诉代码就能实现在任意类使用config.方法 * 关键的几步: * 1、类实现beanFactoryAware,将类中静态变量beanFactory通过实现的setBeanFactory方法赋值 * 2、在静态类中通过beanFactory.getBean得到Spring容器中的bean(单例),然后转化成我们想要 * 的bean类 */