`
futurep_p
  • 浏览: 65478 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

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

/**
 * <p>缓存工厂</p>
 */
public interface CacheFactory {

    /**
     * 刷新配置中的所有缓存
     */
    public void refresh();
    
    /**
     * 获取缓存配置
     * @param cacheTypeEnum 缓存类型
     * @return
     */
    public Map<String, CachedObject> getCacheByType(CacheTypeEnum cacheTypeEnum);
}

   缓存工厂包含两个方法,一个是缓存刷新,一个是获取某个类型下的缓存内容。(这里说的CacheTypeEnum也就是缓存类型枚举定义,自己可以根据业务需要添加。)
这是缓存最基本的要求,即数据的输入和输出。掩藏在缓存工厂下面的就是具体业务的缓存模具了,针对不同的业务,你可以从数据库、或者从文件等数据来源获取需要缓存的信息,具体实现这里就不赘述,相信实现这个不复杂。

  现在我们关心的问题是,现在有了这个缓存工厂,难道在每次需要用缓存数据的时候再注入CacheFactory实例来获取,这样就到处充斥着缓存的东西了,为了让业务不关心这些琐碎的事情,可以引入具体业务的缓存工具。如AreaUtil地区信息工具类,在此工具类里完成对缓存工厂的封装。我们可以抽出一个缓存工具基类,所有其他业务工具类继承此类。

/**
 * <p>缓存工具基类</p>
 */
public class CacheUtilBase {
    /** 缓存工厂
     * 
     * 所有子类都共用一份引用,此引用在<code>cacheFactory</code>初始化完成时设置
     */
    protected static CacheFactory cacheFactory;

    public static void setCacheFactory(CacheFactory cacheFactory) {
        CacheUtilBase.cacheFactory = cacheFactory;
    }
}

 这里也随之带来了我们需要关心的问题,即我们希望通过static的方式访问工具类方法,所以cacheFactory属性也必须是static的。那什么时候来初始化这个工厂实例呢?废话,肯定要在工厂实例初始化完成之后喽,呵呵。那你怎么
知道他初始化完成了呢,这个时候可以通过实现spring的BeanPostProcessor接口,在此实现中完成两件事:1、刷新缓存工厂下的所有缓存;2、初始化缓存工具基类的工厂实例属性。

/**
 * <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!

分享到:
评论

相关推荐

    spring-struts1-strust2-hibernate 核心包介绍

    这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 (2) spring-beans.jar 这个jar文件是所有应用...

    spring jar 包详解

    (1) spring-core.jar 这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 (2) spring-beans.jar 这个...

    基于Spring MVC的web框架 1.1.11

    工具类数据校验 jsp自定义标签 Spring自定义注解 默认requestMapping 1.1.2 代码生成器 1.1.3 首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis...

    spring-aop-5.1.0.RELEASE.jar

    spring-**core**-4.3.6.RELEASE.jar :包含spring框架基本的核心工具类,spring其他组件都要用到这个包里的类,其他组件的基本核心 spring-**beans**-4.3.6.RELEASE.jar:所有应用都要用到的jar包,它包含访问配置...

    spring4.3.9相关jar包

    spring-core.jar(必须):这个jar 文件包含Spring 框架基本的核心工具类。Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 外部依赖Commons ...

    可以直接运行的基于SpringMVC的web框架示例,也可以直接当公司框架

    工具类数据校验 jsp自定义标签 Spring自定义注解 默认requestMapping 1.1.2 代码生成器 1.1.3 首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis...

    最新最全的spring开发包

    这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 (2) spring-beans.jar 这个jar文件是所有应用都要...

    SingleJDBCBase 基于Spring Framework基础上搭建的一个Java基础开发套件

    SingleJDBCBase 是基于Spring Framework基础上搭建的一个Java基础开发套件,以Spring MVC为模型视图控制器,JDBC为数据访问层。 * 核心框架:Spring Framework 4.2.7 ...* 工具类:fasterxml 2.8.7、junit 4.12、

    humbrown:以spring+mybatis为框架的jee开发基础包,提供用于开发业务对象、dao、service、缓存、安全等业务的基类对象和相关工具类

    humbrown以spring+mybatis为框架的jee开发基础包,提供用于开发业务对象、dao、service、缓存、安全等业务的基类对象和相关工具类。项目选型:MVC框架:Spring mvc,使用Thymeleaf渲染view应用层:Spring 3持久层:...

    一个可以直接运行的基于SpringMVC的web框架1.1.12

    工具类数据校验 jsp自定义标签 Spring自定义注解 默认requestMapping 1.1.2 代码生成器 1.1.3 首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis...

    spring4.1核心包

    包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 18. spring-webmvc-4.1.1.RELEASE.jar 包含...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 (2) spring-beans.jar 这个jar文件是所有应用都要...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 mysql版本_spring3.0

    【源码】mysql版本_spring3.0 系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除 3. 会员管理:...

    Spring Boot WEB基本框架

    基于spring boot搭建的web基础框架,包含了web开发中常用的功能,如:缓存(redis)、日志、事务、JPA、shiro、安全、常用工具类、swagger2在线接口文档、跨域支持等,可以基于该项目快速进行公司内部的项目开发。

    SingleMyBatis 是基于Spring Framework基础上搭建的一个Java基础开发套件

    SingleMyBatis 是基于Spring Framework基础上搭建的一个Java基础开发套件,以Spring MVC为模型视图控制器,MyBatis为数据访问层。 * 核心框架:Spring Framework 4.2.7 ...* 工具类:fasterxml 2.8.7、junit 4.12、

    SingleHibernate 是基于Spring Framework基础上搭建的一个Java基础开发套件

    SingleHibernate 是基于Spring Framework基础上搭建的一个Java基础开发套件,以Spring MVC为模型视图控制器,Hibernate为数据访问层。 * 核心框架:Spring Framework 4.2.7 ...* 工具类:fasterxml 2.8.7、junit 4.12、

    SpringBoot+MyBatis-Plus+Mysql+Vue实现智慧园区管理系统.zip

    工具类:Hutool 5.5.1 SpringBoot+MyBatis-Plus+Mysql+Vue实现智慧园区管理系统 软件架构 核心框架:Spring Boot 2.4.0 安全框架:JwtPermission 3.1.1 前端:Ant Design Vue 1.6.2 持久层框架:MyBatis-Plus 3.4.1...

    shiro框架整合(全包)

    提供了包含shiro框架需要的全部jar包(包括缓存配置、spring整合等等)以及源码。

    Spring+SpringMVC+Ehcache+Shiro+BootStrap企业级开发平台

    工具类:Apache Commons、FastJson、EASYPOI、BladeToolBox 2、前端 JS框架:jQuery CSS框架:Twitter Bootstrap 客户端验证:JQuery-html5Validate 富文本:KindEcitor 数据表格:jqGrid 树结构控件:...

    Spring 2.0 开发参考手册

    18.3. 使用Spring提供的辅助类实现EJB组件 19. JMS 19.1. 简介 19.2. 使用Spring JMS 19.2.1. JmsTemplate 19.2.2. 连接工厂 19.2.3. (消息)目的地管理 19.2.4. 消息侦听容器 19.2.5. 事务管理 19.3. 发送...

Global site tag (gtag.js) - Google Analytics