EhCache的配置
JPA和Hibernate的二级缓存都是这样做的
代码目录:

这是基础的jar包,如果少的话,再去maven下载 <!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency> <!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency> <!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency> <!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache-core -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- AspectJ -->
ehcache.xml :
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
updateCheck="false">
<cache name="baseCache"
eternal="false"
maxEntriesLocalHeap=""
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds=""
statistics="true"
timeToLiveSeconds=""/>
</ehcache>
这里采用两种bean的配置方式,一种是xml(EhCacheConfig.xml),一种是java(EhCacheConfig.java),如下:
EhCacheConfig.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 启用缓存 -->
<cache:annotation-driven cache-manager="cacheManager"/> <bean id="cm" class="com.spring.ehcache.CacheMethod"></bean> <bean id="ehCacheManagerFactory"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
</bean> <!-- 这个bean的id必须叫 cacheManager,不然会报错 No bean named 'cacheManager' is defined-->
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="ehCacheManagerFactory"/>
<property name="transactionAware" value="true"/>
</bean> <!-- 可以使用ConcurrentMapCacheManager作为缓存管理器,
它非常简单,对应开发,测试或基础的应用来说,是个不错的选择。但对于生产级别的应用不理想
用这个替换掉上面的ehCacheManagerFactory和cacheManager这两个bean就行啦
<bean id="cacheManager"
class="org.springframework.cache.concurrent.ConcurrentMapCacheManager">
</bean>
-->
<!--
Spring3.1内置了五个缓存管理器实现
SimpleCacheManager
NoOpCacheManager
ConcurrentMapCacheManager
CompositeCacheManager
EhCacheCacheManager
Spring Data又提供了两个缓存器
RedisCacheManager
GemfireCacheManager
-->
</beans>
EhcacheConfig .java:
package com.spring.ehcache;
import net.sf.ehcache.CacheManager; import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource; @Configuration
@EnableCaching //启用缓存
public class EhcacheConfig { @Bean(name="ehCacheCacheManager")
public EhCacheCacheManager ehCacheCacheManager(CacheManager cm){
EhCacheCacheManager ehCacheCacheManager = new EhCacheCacheManager();
ehCacheCacheManager.setTransactionAware(true);
ehCacheCacheManager.setCacheManager(cm);
return ehCacheCacheManager;
}
@Bean(name="ehCacheManagerFactoryBean")
public EhCacheManagerFactoryBean ehCacheManagerFactoryBean(){
String src = "ehcache.xml";
System.out.println("EhCacheManagerFactoryBean..");
EhCacheManagerFactoryBean ehFactoryBean =
new EhCacheManagerFactoryBean();
ehFactoryBean.setConfigLocation(new ClassPathResource(src));
return ehFactoryBean;
} @Bean(name="cm")
public CacheMethod cacheMethod(){ return new CacheMethod(); } }
CacheMethod.java: 这个是缓存测试的类,如果有缓存的话,里面的getStr()方法会执行一次,否则会执行多次
package com.spring.ehcache;
import org.springframework.cache.annotation.Cacheable;
public class CacheMethod {
public CacheMethod(){
System.out.println("CacheMethod..");
}
//@Cacheable 表明Spring在调用方法之前,首先应该在缓存中查找方法的返回值。如果这个值能够找到,就返回缓存的值。否则方法被调用,返回值放入缓存中
//@CachePut 表明Spring应该将方式的缓存值放到缓存中。在方法的调用前并不会检查缓存,方法始终都会被调用
//@CacheEvict 表明Spring应该在缓存中清除一个或多个条目
//@Caching 这是一个分组的注解,能够同时应用多个其他的缓存注解
@Cacheable("baseCache")
public String getStr(){
System.out.println("get Str..");
return "test get str";
}
}
TestCache.java
package com.spring.ehcache; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @ContextConfiguration(classes=EhcacheConfig.class)
@RunWith(SpringJUnit4ClassRunner.class)
//SpringJUnit4ClassRunner.class使用时要注意,junit的版本要求9以上
public class TestCache {
@Autowired
private CacheMethod cm;
@Autowired
private EhCacheManagerFactoryBean ehCacheManagerFactoryBean;
@Autowired
private EhCacheCacheManager ehCacheCacheManager;
/**
* 使用java配置bean
* */ @Test
public void getCache(){
System.out.println(ehCacheManagerFactoryBean);
System.out.println(ehCacheCacheManager);
System.out.println(cm.getStr());
System.out.println(cm.getStr());
System.out.println(cm.getStr());
} /**
* 使用xml配置bean
*
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("com/spring/ehcache/EhCacheConfig.xml");
System.out.println(app.getBean("ehCacheManagerFactory"));
System.out.println(app.getBean("cacheManager"));
System.out.println(((CacheMethod)app.getBean("cm")).getStr());
System.out.println(((CacheMethod)app.getBean("cm")).getStr());
System.out.println(((CacheMethod)app.getBean("cm")).getStr());
}
*/ }
EhCache的配置的更多相关文章
- (转)springMVC+mybatis+ehcache详细配置
一. Mybatis+Ehcache配置 为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方 ...
- ehcache.xml配置参数
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLoc ...
- hibernate二级缓存ehcache hibernate配置详解
<!-----------------hibernate二级缓存ehcache------------------------->hibernate配置 <prop key=&quo ...
- spring中ehcache的配置和使用方法
继续上篇,这篇介绍服务层缓存,ehcache一般的配置和用法 一.添加jar包引用 修改pom.xml文件,加入: <dependency> <groupId>org.spri ...
- SpringBoot中整合Redis、Ehcache使用配置切换 并且整合到Shiro中
在SpringBoot中Shiro缓存使用Redis.Ehcache实现的两种方式实例 SpringBoot 中配置redis作为session 缓存器. 让shiro引用 本文是建立在你是使用这sh ...
- Ehcache缓存配置
Cache的配置很灵活,官方提供的Cache配置方式有好几种.你可以通过声明配置.在xml中配置.在程序里配置或者调用构造方法时传入不同的参数. 你可以将Cache的配置从代码中剥离出来,也可以在使用 ...
- Hibernate学习笔记之EHCache的配置
Hibernate默认二级缓存是不启动的,启动二级缓存(以EHCache为例)需要以下步骤: 1.添加相关的包: Ehcache.jar和commons-logging.jar,如果hibernate ...
- ehcache 的配置
配置:一.在src目录下加入ehcache.xml: <cache name="SimplePageCachingFilter" maxElementsInMemory=&q ...
- 02_MyBatis项目结构,所需jar包,ehcache.xml配置,log4j.properties,sqlMapConfig.xml配置,SqlMapGenerator.xml配置
项目结构(所需jar包,配置文件) sqlMapConfig.xml的配置内容如下: <?xmlversion="1.0"encoding="UTF-8&qu ...
随机推荐
- 如何寻找“真爱”型合伙人
曾与朋友笑侃,现在找人结婚,跟合伙开公司差不多,各自条件一一对比,细细斟酌,最后双方达成一致,才得凑成一对冤家.谁说不是呢?两种关系都实为"伙伴",开公司重" ...
- 十一个行为模式之状态模式(State Pattern)
定义: 当一个对象有多个状态,并且在每个状态下有不同的行为,可以使用状态模式来在其内部改变状态时改变其行为,而客户端不会察觉状态的改变,仍使用同样的方法或接口与对象进行交互. 结构图: Context ...
- Effective c++读书笔记
1.视C++为一个语言联邦 C.object-oriented C++.template C++.STL 2.尽可能使用const: 1)关键字const出现的星号左边,表示被指物事常 ...
- 用childNodes获取子元素 换行会产生一个子元素
<div id='div1'> <div id='div2'> <div id='div3'></div> </div> <div c ...
- DYN-B201 Dynamics CRM 云生产力解决方案与功能简介
DYN-B201 Dynamics CRM 云生产力解决方案与功能简介 讲师:王健.林松涛Dynamics CRM 云产品正式落地中国,CRM 与 Azure.O365 深度整合无缝集成,带来无与伦比 ...
- web安全攻防----环境搭建篇
1.安装虚拟机vMware. 2.在虚拟机上安装kali系统. *Kali为linux操作系统的一个发行版. 3.安装Xshell *Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH ...
- 统计和分析系统性能【IO CPU 内存】的工具集合
统计和分析系统性能[IO CPU 内存]的工具集合 blktrace http://www.oschina.net/p/blktrace 获取磁盘写入的信息 root@demo:~/install/p ...
- TFS online 自动部署配置
概要 采用tfs online进行源码管理,并配置自动编译部署到外网上一台服务器上(阿里云虚拟机) 步骤; 下载angent,并运行脚本安装 配置release managemetn; 1)Copy ...
- GPU大百科全书索引(有助于理解openGL工作流程)
GPU大百科全书索引 0.GPU大百科全书 前传 看图形与装修的关系 1.GPU大百科全书 第一章:美女 方程与几何 2.GPU大百科全书 第二章 凝固生命的光栅化 3.GPU大百科全书 第三章:像素 ...
- Java中的常见面试题
1.sleep()和wait()的区别: 两者都可以控制线性进程,阻塞进程.区别是: -----|sleep():释放CPU,不释放资源(锁).可以通过指定时间来使它自动醒来,时间不到只能调用iter ...