使用spring框架在应用启动时加载数据库中的数据资源加入缓存
2014-06-11 15:10
531 查看
今天研究了一下应用在启动的时候,将一些固定的资源加载到缓存中,这样使用的时候会提供很大便利和性能上的提升。我看了一些关于这方面的资料,感觉都很好,这里面我主要说下使用spring框架提供的接口BeanPostProcessor接口来达到这一个目的。
BeanPostProcessor接口有两个方法:
public Object postProcessBeforeInitialization(Object arg0, String arg1) ,这是bean在加载前执行的方法。
public Object postProcessAfterInitialization(Object arg0, String arg1),这是bean在加载后执行的方法。
在spring启动到时候,没加载一个bean都会执行实现该接口的类。
下面,就说下如何利用BeanPostProcessor来加载数据入缓存 ,例如下面实现
上面是实现BeanPostProcessor接口的代码 ,实现该代码后,我们还要去配置这个bean,配置如下:
<!-- 初始缓存数据,初始化spring中定义的bean的前后都会用此实现类 -->
<bean id="cacheBeanPostProcessor" class="org.zgm.oa.cache.CacheBeanPostProcessor" />
此处要注意,一定要将该配置放在最后,或者你要使用的Bean的后面 ,如我上面的例子,这个配置就要放在IMenuService这个bean的后面才行,如果是使用注解方式,那就放在
BeanPostProcessor接口有两个方法:
public Object postProcessBeforeInitialization(Object arg0, String arg1) ,这是bean在加载前执行的方法。
public Object postProcessAfterInitialization(Object arg0, String arg1),这是bean在加载后执行的方法。
在spring启动到时候,没加载一个bean都会执行实现该接口的类。
下面,就说下如何利用BeanPostProcessor来加载数据入缓存 ,例如下面实现
@Override public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException { if(arg0 instanceof IMenuService){ //判断Object是否是该类的bean List<Menu> list = ((IMenuService) arg0).getAllResource(); 如果是,就执行查询 System.out.println(arg0 + "初始化后=====================>"+list.get(0).getMc()); // --这里就可以进行缓存操作了 } return arg0; } @Override public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException { System.out.println("Spring 初始化前" + arg0); return arg0; }
上面是实现BeanPostProcessor接口的代码 ,实现该代码后,我们还要去配置这个bean,配置如下:
<!-- 初始缓存数据,初始化spring中定义的bean的前后都会用此实现类 -->
<bean id="cacheBeanPostProcessor" class="org.zgm.oa.cache.CacheBeanPostProcessor" />
此处要注意,一定要将该配置放在最后,或者你要使用的Bean的后面 ,如我上面的例子,这个配置就要放在IMenuService这个bean的后面才行,如果是使用注解方式,那就放在
<context:component-scan base-package="***.***.***" />后面。
相关文章推荐
- 使用spring框架,应用启动时,加载数据
- ServletContextListener 启动SPRING加载数据到缓存的应用
- .NET应用访问数据库之数据库的开销问题 后续篇(一)缓存的使用
- 【技术贴】第二篇 :解决使用maven jetty启动后无法加载修改过后的静态资源
- 使用 UITableView 创建表格应用演练(2)——从plist文件加载并显示数据
- ADO.NET访问数据-DataSet本地缓存与数据库的交互过程,以及应用
- Windows 8 Metro应用中使用C#连接SQLite及创建数据库,数据表的增删改查
- 转载:用oralce连接.net客户端出现问题:“数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,”的解
- spring 启动后执行自我操作(如加入数据进入缓存) 基于注解
- 数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组
- 【技术贴】解决使用maven jetty启动后无法加载修改过后的静态资源
- 难点总结:Jquery动态加载数据库中的数据(解答人:郭哲 方式:讲述jquery原理及一些函数的使用方法,学会看帮助文档)
- Spring框架之Filter应用,filter可以使用spring注入资源
- Code-First 在SQLServer Compact 4.0 中的应用(二),使用Migrations更改数据库架构并保留历史数据
- Cocos2dx之进度条使用,异步加载资源进缓存
- 使用数据库缓存数据
- 用oralce连接.net客户端出现问题:“数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组
- SolpartMenu的使用:(二)、在ASP.NET页面中使用SolpartMenu控件之动态的加载数据库中的数据来生成菜单
- Spring框架之Filter应用,filter可以使用spring注入资源
- SolpartMenu的使用:(二)、在ASP.NET页面中使用SolpartMenu控件之动态的加载数据库中的数据来生成菜单