读书人

spring框架上缓存与工具类的结合

发布时间: 2012-11-09 10:18:48 作者: rapoo

spring框架下缓存与工具类的结合

?? 实现缓存的方式有很多,而在spring框架下,通常我们可以通过它的单例模式简单达到缓存对象的目的。
?? 这里着重介绍缓存信息如何达到在系统启动时初始化,并延伸出简单的使用缓存工具类,达到两者较好的结合效果。
下面首先介绍缓存老大,缓存工厂(CacheFactory),因为下面所有的说明都以此为依据,那么先看看这个缓存工厂的定义吧。

/** * <p>容器bean初始化处理实现</p> *  * 针对bean初始化完成前后的特殊处理在此完成。 */public class InstantiationBeanPostProcessor implements BeanPostProcessor {    private static final Logger logger = Logger.getLogger(InstantiationBeanPostProcessor.class);    /*     * (non-Javadoc)     * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String)     */    public Object postProcessAfterInitialization(Object bean, String beanName)                                                                              throws BeansException {        // 初始化缓存        if (bean instanceof CacheFactory) {            if (logger.isInfoEnabled()) {                logger.info("执行缓存初始化");            }            CacheFactory cacheFactory = (CacheFactory) bean;            // 初始化工具类缓存信息        CacheUtilBase.setCacheFactory(cacheFactory);            // 缓存刷新        cacheFactory.refresh(true);        }        return bean;    }    /*     * (non-Javadoc)     * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object, java.lang.String)     */    public Object postProcessBeforeInitialization(Object bean, String beanName)                                                                               throws BeansException {        // do nothing        return bean;    }}

?

通过注册InstantiationBeanPostProcessor,spring在初始化bean实例的时候就会可以完成对缓存工厂实例的操作了,这样就大功告成了。
系统启动之日,即缓存工作之时,yeah!

读书人网 >软件架构设计

热点推荐