Spring Cache 缓存注解实现

本贴最后更新于 2644 天前,其中的信息可能已经事过景迁

要使用 Spring Cache 前提是 Spring jar 的版本在 3.1 及以上,及引入 spring-context-*.jar,这个。其他的环境及 jar 包不作介绍。

缓存用的实体类

缓存用的实体类必须具有 getter 和 setter 方法。如下:

public class ErrorEntity {
    private int code;
    private String msg;
    public ErrorEntity(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
    
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

缓存类实现

在缓存 Manage 管理实现类中,使用 @Cacheable 来缓存。如下:

public class ErrorCacheManager {
    @Cacheable(value = "errorCacheManager")
    public ErrorEntity get(String name) {
        //省略读取过程,直接返回结果
        System.out.prinltn("reading from disk");
        return new ErrorEntity(1,"成功");
    }
}

修改 Spring 的配置文件

配置的话,在 spring.xml 添加对 Manager 类的实例化,以及把该类加入缓存类管理。

<bean id="errorCacheManager" class="com.ixiaozhi.ErrorCacheManager"/>
<cache:annotation-driven/>
<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
    <property name="caches">
        <set>
            <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="default"/>
            <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
                      p:name="errorCacheManager"/>
        </set>
    </property>
</bean>

测试

接下来,我们可以写测试类了,这里使用 JUnit。

@Test
public test() {
    ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
    ErrorCacheManager cache = (ErrorCacheManager) ctx.getBean("errorCacheManager");
    cache.get("test");
    cache.get("test");
    cache.get("test");
    cache.get("test");
}

运行上面测试代码,只会输出一次
reading from disk ,其他都是从 Spring Cache 里取得。

后篇:Spring Cache 使用 GuavaCache 进行管理

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 17 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...