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!