使用spring框架,应用启动时,加载数据
2013-06-21 14:37
295 查看
场景描述:
有时我们需要在应用启动时,加载某些不常变的数据到缓存中,避免每次请求时查询数据库或其它数据源,以提高性能(准备连接,建立连接,关闭连接,减少数据读取的IO数).如果应用中刚好用到spring框架,正好可以用spring的机制实现这个功能
解决方案:
1:写一个类,实现BeanPostProcessor接口,这个接口有两个方法。
(1):postProcessBeforeInitialization方法,在spring中定义的bean初始化前调用这个方法
(2):postProcessAfterInitialization方法,在spring中定义的bean初始化后调用这个方法
例子代码:
2:在spring的xml文件中,添加
<!-- 初始缓存数据,初始化spring中定义的bean的前后都会用此实现类 -->
<bean id="cacheBeanPostProcessor" class="com.guagua.cache.CacheBeanPostProcessor"/>
3:在加载数据后,数据存在什么地方,由你来定,我这个例子是放到了一个“静态变量中”
结束语:
如有疑问,请提出异议建意。
有时我们需要在应用启动时,加载某些不常变的数据到缓存中,避免每次请求时查询数据库或其它数据源,以提高性能(准备连接,建立连接,关闭连接,减少数据读取的IO数).如果应用中刚好用到spring框架,正好可以用spring的机制实现这个功能
解决方案:
1:写一个类,实现BeanPostProcessor接口,这个接口有两个方法。
(1):postProcessBeforeInitialization方法,在spring中定义的bean初始化前调用这个方法
(2):postProcessAfterInitialization方法,在spring中定义的bean初始化后调用这个方法
例子代码:
public class CacheBeanPostProcessor implements BeanPostProcessor { @Override public 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; } @Override public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException { // TODO Auto-generated method stub return 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>(); @Autowired private ColumnDao columnDao; public void setColumnDao(ColumnDao columnDao) { this.columnDao = columnDao; } @Override public List<Column> getColumnList() throws Exception { columnList = columnDao.getColumnList(); return columnList; } }
结束语:
如有疑问,请提出异议建意。
相关文章推荐
- 使用spring框架在应用启动时加载数据库中的数据资源加入缓存
- android应用第一次启动加载大数据导致启动速度慢解决办法
- Spring Boot 启动加载数据 CommandLineRunner的使用
- Servlet(8)Servlet配置细节(包括web应用启动即加载Servlet类)及ServletConfig使用
- (一)Spring boot CommandLineRunner的基本使用:启动加载数据
- 关于监听器的使用(服务器启动时加载数据)
- Web项目使用Spring框架服务器启动加载xml文件的过程学习
- 使用 UITableView 创建表格应用——从plist文件加载并显示数据(转)
- 使用 UITableView 创建表格应用演练(2)——从plist文件加载并显示数据
- ServletContextListener 启动SPRING加载数据到缓存的应用
- 使用viewpager+fragment,在activity启动模式为singleTask,跳转到当前页面重新加载数据fragment数据不更新
- Avro技术应用_8. 使用 Sqoop 加载数据的时候使用 Avro 格式进行编码 -- 带完善
- 在项目启动时 使用监听器加载所有字典表数据
- VC DataGrid使用问题,在其它电脑上,应用数据程序弹出“未成功配置,应用程序无法启动”
- ListView动态加载数据模板(使用代码布局)
- react-native ListView加载大量数据时会占用大量内存导致应用崩溃
- HIVE原生和复合类型的数据加载和使用
- 让您的Ajax应用加载数据时界面友好
- jqGrid与Struts2的结合应用(三) —— 使用自定义表单对话框编辑Grid数据
- iOS 10 不提示「是否允许应用访问数据」,导致应用无法使用的解决方案