Spring如何基于注解配置使用ehcache
使用ehcache-spring-annotations使得在工程中簡(jiǎn)單配置即可使用緩存
下載地址:http://code.google.com/p/ehcache-spring-annotations/
需要的jar包,首先需要的是我們之前做SpringMVC時(shí)的各個(gè)Spring的jar包
然后需要把ehcache-spring-annotations-1.2.0文件夾內(nèi)lib內(nèi)的,非spring的jar加進(jìn)去,因?yàn)槲覀円呀?jīng)增加了我們版本的spring
然后還需要?jiǎng)討B(tài)代理的cglib包
在spring主配置文件中配置ehcache注解的使用:
<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring
http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd">
<ehcache:annotation-driven cache-manager="ehCacheManager" />
<bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
</bean>
<bean id="sacheService" class="test.CacheService"></bean>
</beans>
配置緩存配置文件ehcache.xml,改文件放在SRC下:
<?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">
<diskStore path="java.io.tmpdir" />
<defaultCache eternal="false" maxElementsInMemory="1000"
overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"
timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" />
<cache name="testCache" eternal="false" maxElementsInMemory="100"
overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"
timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />
</ehcache>
CacheService是示例類,代碼如下:
package test;
import java.util.Date;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.googlecode.ehcache.annotations.Cacheable;
import com.googlecode.ehcache.annotations.TriggersRemove;
public class CacheService{
@SuppressWarnings("deprecation")
@Cacheable(cacheName = "testCache")
public String getName(String code){
System.out.println("查詢編號(hào):" + code);
return new Date().toLocaleString() + "-->" + code;
}
@SuppressWarnings("deprecation")
@Transactional(propagation = Propagation.REQUIRED)
public String update(String code){
System.out.println("更新編號(hào):" + code);
return new Date().toLocaleString() + "-->" + code;
}
@TriggersRemove(cacheName="testCache",removeAll=true)
public void flush(){
System.out.println("情況緩存");
System.out.println("Processing testFlushing");
}
}
改類包含根據(jù)參數(shù)獲取緩存值,更新緩存,情況緩存,都是使用注解標(biāo)簽實(shí)現(xiàn)。
Action類需要改動(dòng)一下,代碼如下:
package test;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
// http://localhost:8080/spring/hello.do?key=1&code=java
@org.springframework.stereotype.Controller
public class HelloController{
private CacheService sacheService;
@SuppressWarnings("deprecation")
@RequestMapping("/hello.do")
public String hello(HttpServletRequest request,HttpServletResponse response){
String key = request.getParameter("key");
if("1".equals(key)){
request.setAttribute("message", sacheService.getName(request.getParameter("code")));
}else if("2".equals(key)){
request.setAttribute("message", sacheService.update(request.getParameter("code")));
}else{
sacheService.flush();
request.setAttribute("message", sacheService.getName(request.getParameter("code")));
}
return "hello";
}
public CacheService getSacheService() {
return sacheService;
}
@Autowired
public void setSacheService(CacheService sacheService) {
this.sacheService = sacheService;
}
}
根據(jù)key做不同的操作,然后分別訪問以下幾個(gè)路徑,為了方便看效果和學(xué)習(xí),我把工程代碼放到了附件:
第一次沒有緩存
http://localhost:8080/spring/hello.do?key=1&code=java
讀取緩存
http://localhost:8080/spring/hello.do?key=1&code=java
更新緩存
http://localhost:8080/spring/hello.do?key=2&code=java
讀取最新緩存
http://localhost:8080/spring/hello.do?key=1&code=java
情況緩存
http://localhost:8080/spring/hello.do?key=3
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解SpringBoot2.0的@Cacheable(Redis)緩存失效時(shí)間解決方案
- SpringBoot+SpringCache實(shí)現(xiàn)兩級(jí)緩存(Redis+Caffeine)
- Spring @Cacheable redis異常不影響正常業(yè)務(wù)方案
- SpringCache之 @CachePut的使用
- Spring Cache整合Redis實(shí)現(xiàn)方法詳解
- SpringBoot2 整合Ehcache組件,輕量級(jí)緩存管理的原理解析
- Spring cache整合redis代碼實(shí)例
- Spring Cache擴(kuò)展功能實(shí)現(xiàn)過程解析
- Springboot整合GuavaCache緩存過程解析
- Spring Cache相關(guān)知識(shí)總結(jié)
相關(guān)文章
解決 IDEA 創(chuàng)建 Gradle 項(xiàng)目沒有src目錄問題
這篇文章主要介紹了解決 IDEA 創(chuàng)建 Gradle 項(xiàng)目沒有src目錄問題,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
Spring Security自定義登錄原理及實(shí)現(xiàn)詳解
這篇文章主要介紹了Spring Security自定義登錄原理及實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Java中的HashSet集合存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)詳解
這篇文章主要介紹了Java中的HashSet集合存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)詳解,數(shù)組結(jié)構(gòu)他把元素進(jìn)行分組,相同哈希值的元素是一組,鏈表/紅黑樹結(jié)構(gòu)把相同哈希值的元素鏈接到一起,存儲(chǔ)數(shù)據(jù)到集合中,先計(jì)算元素的哈希值,需要的朋友可以參考下2023-09-09
IDEA導(dǎo)出jar打包成exe應(yīng)用程序的小結(jié)
這篇文章主要介紹了IDEA導(dǎo)出jar打包成exe應(yīng)用程序,需要的朋友可以參考下2020-08-08
SpringBoot+MyBatisPlus對(duì)Map中Date格式轉(zhuǎn)換處理的方法詳解
在?SpringBoot?項(xiàng)目中,?如何統(tǒng)一?JSON?格式化中的日期格式。本文將為大家介紹一種方法:利用MyBatisPlus實(shí)現(xiàn)對(duì)Map中Date格式轉(zhuǎn)換處理,需要的可以參考一下2022-10-10
Java中使用異或運(yùn)算符實(shí)現(xiàn)加密字符串
這篇文章主要介紹了Java中使用異或運(yùn)算符實(shí)現(xiàn)加密字符串,本文直接給出實(shí)現(xiàn)代碼,以及運(yùn)算結(jié)果加密實(shí)例,需要的朋友可以參考下2015-06-06
idea神級(jí)插件及如何安裝Bito插件【Bito-ChatGPT】
這篇文章主要介紹了介紹一款idea神級(jí)插件【Bito-ChatGPT】,Bito插件的強(qiáng)大之處在于它可以幫助開發(fā)人員更快地提交代碼,同時(shí)還提供了一些有用的功能,如自動(dòng)補(bǔ)全提交信息、快速查看歷史記錄等,需要的朋友可以參考下2023-04-04
SpringBoot 并發(fā)登錄人數(shù)控制的實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot 并發(fā)登錄人數(shù)控制的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Mybatis中特殊SQL的執(zhí)行的實(shí)現(xiàn)示例
本文主要介紹了Mybatis中特殊SQL的執(zhí)行的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
手把手教你實(shí)現(xiàn)Java第三方應(yīng)用登錄
本文主要介紹了手把手教你實(shí)現(xiàn)Java第三方應(yīng)用登錄,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

