您的位置:首页 > 编程语言 > Java开发

使用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来加载数据入缓存 ,例如下面实现

@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 缓存 数据
相关文章推荐