使用spring框架,应用启动时,加载数据
来源:互联网 发布:mac运行exe 编辑:程序博客网 时间:2024/06/04 00:46
场景描述:
有时我们需要在应用启动时,加载某些不常变的数据到缓存中,避免每次请求时查询数据库或其它数据源,以提高性能(准备连接,建立连接,关闭连接,减少数据读取的IO数).如果应用中刚好用到spring框架,正好可以用spring的机制实现这个功能
解决方案:
1:写一个类,实现BeanPostProcessor接口,这个接口有两个方法。
(1):postProcessBeforeInitialization方法,在spring中定义的bean初始化前调用这个方法
(2):postProcessAfterInitialization方法,在spring中定义的bean初始化后调用这个方法
例子代码:
public class CacheBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessAfterInitialization(Object obj, String arg1) throws BeansException {try {if(obj instanceof ColumnService) { ((ColumnService)obj).getColumnList();//加载栏目数据 }else if(obj instanceof TradeServiceImpl){ ((TradeServiceImpl)obj).getTradeList();//加载行业数据 }} catch (Exception e) { e.printStackTrace();} return obj; }@Overridepublic Object postProcessBeforeInitialization(Object arg0, String arg1)throws BeansException {// TODO Auto-generated method stubreturn arg0;}}
2:在spring的xml文件中,添加
<!-- 初始缓存数据,初始化spring中定义的bean的前后都会用此实现类 -->
<bean id="cacheBeanPostProcessor" class="com.guagua.cache.CacheBeanPostProcessor"/>
3:在加载数据后,数据存在什么地方,由你来定,我这个例子是放到了一个“静态变量中”
@Service("columnService")public class ColumnServiceImpl implements ColumnService {public static List<Column> columnList = new ArrayList<Column>();@Autowiredprivate ColumnDao columnDao;public void setColumnDao(ColumnDao columnDao) {this.columnDao = columnDao;}@Overridepublic List<Column> getColumnList() throws Exception {columnList = columnDao.getColumnList();return columnList;}}
结束语:
如有疑问,请提出异议建意。
- 使用spring框架,应用启动时,加载数据
- 使用spring框架在应用启动时加载数据库中的数据资源加入缓存
- spring启动时加载缓存中数据
- spring-boot启动时加载数据 CommandlineRunner
- spring boot启动加载数据
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- Spring Boot 启动加载数据 CommandLineRunner
- iOS问与答——2013.06.21
- 用ffmpeg把H264数据流解码成YUV420P
- EF架构~引入规约(Specification)模式,让程序扩展性更强
- C++数据结构和算法每天一练(线性表)
- Tor源码分析十 -- 连接和链路
- 使用spring框架,应用启动时,加载数据
- 如何快速搭建一个Android开发测试平台
- DataGridView绑定数据-修改列值-序号列-交换列顺序
- c++变量在内存中的存储区域
- 记录 -- Android中的Handler总结
- linux练习题大全
- robotium相关代码学习
- jQuery support 源码解读
- 矩阵顺时针螺旋赋值