利用Spring BeanPostProcessor 初始化时加载数据到缓存
2016-07-27 11:34
681 查看
我们经常会在项目中碰到需要加载一些常量到内存中,以便不比每次需要使用时都去查询数据库, 如,一些国家信息,省份信息,地址信息等 不会变动 或变动很少,但数据量又比较大的数据, 这时我们就需要把这些数据加载进内存,需要使用时直接从内从中取。
Spring配置
然后定义一个类 实现接口 BeanPostProcessor
再定义一个类(service)在这个类中进行调用DAO查询数据库 ,加载出数据
就这样在Spring 启动时 数据就会被加载到 上面 StartOnLoadService 中的 dictionaryInfoMap 中。之后可以通过如下代码获取初始化保存的Map信息
Spring配置
<context:component-scan base-package="com.github.weibao.compoment />
然后定义一个类 实现接口 BeanPostProcessor
public class PBSTrackManagerPostProcessor implements BeanPostProcessor { public Object postProcessAfterInitialization(Object obj, String arg1) throws BeansException { if(obj instanceof StartOnLoadService) { ((StartOnLoadService)obj).loadData(); //调用方法加载数据 } return obj; } public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException { return arg0; } }
再定义一个类(service)在这个类中进行调用DAO查询数据库 ,加载出数据
public class StartOnLoadService { public static Map<String,List> dictionaryInfoMap = new HashMap<String, List>(); //保存国籍信息 private CountryService countryService; //受Spring 管理的Service 方法 调用Dao取数据 /** * Spring 容器初始化时加载 */ public void loadData() { List optionList = countryService.getAllCountry(); dictionaryInfoMap.put("nationalMap", optionList); } public CountryService getCountryService() { return countryService; } public void setCountryService(CountryService countryService) { this.countryService = countryService; } }
就这样在Spring 启动时 数据就会被加载到 上面 StartOnLoadService 中的 dictionaryInfoMap 中。之后可以通过如下代码获取初始化保存的Map信息
List optionList = StartOnLoadService.dictionaryInfoMap.get("nationalMap");
相关文章推荐
- eclipse彻底修改工程名字
- freemarker截取指定长度字符串
- Struts2模型驱动
- eclipse PyDev 字符集编码设置的3种方法
- Spring延迟加载
- SpringSecurity4.1配置
- 开启我的JAVA之路
- Java并发编程:Callable、Future和FutureTask
- JAVA基础培训(isoft)
- spring mvc 在Web.xml中自动扫描Spring的配置文件及resource时classpath*:与classpath:的区别
- Android开发常见问题之Process 'command 'D:\Java Jdk\java\bin\java.exe'' finished with non-zero exit value 2
- 深入理解java虚拟机学习—运行时数据区域
- SBT和Lightbend Activator的使用
- spring+struts2+hibernate+mybatis
- 可运行jar包的几种打包/部署方式
- [置顶] Spring+Quartz配置
- java 继承
- Java多线程实现异步调用
- java_内存划分
- spring mvc Web.xml配置详解之context-param