Spring3.2使用Ehcache注解

项目组使用的框架是Spring3.2+hibernate4,老师让我研究一下Spring的缓存机制。在网上找了下,发现Ehcache使用的最多,个人也不太喜欢写太多配置文件,就决定采用注解的方式实现缓存。本文算是个人的一点经验总结,闲话不多说,进入正题吧。

一.配置Spring缓存

首先要做的是在Spring的主配置文件中加入缓存的配置信息,beans节点的属性如下所示:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:cache="http://www.springframework.org/schema/cache"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/cache 
	http://www.springframework.org/schema/cache/spring-cache-3.2.xsd
	http://www.springframework.org/schema/aop           
	http://www.springframework.org/schema/aop/spring-aop-2.5.xsd            
	http://www.springframework.org/schema/tx            
	http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
	">
其中,cache和tx是实现注解缓存所必须的。主配置文件中关于缓存的配置信息如下所示:

<!-- 开启注解缓存 -->
<cache:annotation-driven />
	
<!-- cacheManager工厂类,指定ehcache.xml的位置 -->
<bean id="cacheManagerFactory"
	class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
	<property name="configLocation" value="classpath:ehcache.xml"></property>
	<property name="shared" value="true"></property>
</bean>

<!-- 声明cacheManager -->
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
	<property name="cacheManager" ref="cacheManagerFactory">
	</property>
</bean>
这里要注意两个问题,一个是EhCacheManagerFactoryBean的shared属性要显示的设定为true,否则会一直报错,本人就在这个问题上纠结了很久;另一个是classpath,这个路径指向的是src的子目录,本人曾尝试把ehcache.xml放在WEB-INF下,但一直没有成功,最后只好放在src的子目录下了。

二.配置ehcache.xml文件

spring配置文件里只是配置了一些代理信息,具体的缓存还是要在ehcache.xml中配置。ehcache.xml如下所示:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="ehcache.xsd">

    <diskStore path="java.io.tmpdir"/>

    <defaultCache
        maxElementsInMemory="100"
        eternal="true"
        overflowToDisk="true"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"/>
        
    <cache name="domainCache"
            maxElementsInMemory="100"
            eternal="true"
            overflowToDisk="true"
            />    
    
    <cache name="entityCache"
    		maxElementsInMemory="100"
    		eternal="true"
    		overflowToDisk="true"
    		/>
            
</ehcache>

三.在代码中使用注解

配置信息整理完之后就可以在代码中使用注解了,如下所示:

@Cacheable(value ="domainCache",key="#id")
public MetaDicDomain getById(String id) {
	MetaDic dic = metaDicDao.get(id);
	MetaDicDomain dicDomain= new MetaDicDomain(dic);
	return dicDomain;
}

PS:需要ehcache的依赖包

这个比较坑,如果少了ehcache的依赖包即使配置好了所有的文件也是没法使用缓存的。。。我这里使用的是ehcache-2.7.5.jar,没有出现问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用 Ehcache 缓存来配置 Spring Boot 的步骤如下: 1. 添加 Ehcache 依赖:在 pom.xml 文件中添加 Ehcache 的相关依赖。 ```xml <dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency> ``` 2. 创建 Ehcache 配置文件:在 src/main/resources 目录下创建一个 ehcache.xml 文件,并配置缓存的名称、容量、过期时间等信息。 ```xml <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ehcache.org/v3" xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd"> <cache alias="myCache"> <expiry> <ttl unit="seconds">60</ttl> </expiry> <heap unit="entries">100</heap> </cache> </config> ``` 3. 配置 Spring Boot 应用程序:在 Spring Boot 的配置类上使用 @EnableCaching 注解开启缓存功能,并指定 Ehcache缓存管理器。 ```java import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.ehcache.EhCacheCacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @EnableCaching public class CacheConfig { @Bean public EhCacheCacheManager cacheManager(CacheManager ehCacheManager) { return new EhCacheCacheManager(ehCacheManager); } } ``` 4. 使用缓存注解:在需要缓存的方法上使用 Spring缓存注解,比如 @Cacheable、@CachePut、@CacheEvict 等。 ```java @Service public class MyService { @Cacheable("myCache") public String getCachedData(String key) { // 从数据库或其他数据源中获取数据 return data; } } ``` 以上是使用 Ehcache 缓存配置 Spring Boot 的基本步骤。请根据你的具体需求进行相应的修改和扩展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值