Spring如何基于注解配置使用ehcache

网友投稿 470 2023-03-18

Spring如何基于注解配置使用ehcache

Spring如何基于注解配置使用ehcache

使用ehcache-spring-annotations使得在工程中简单配置即可使用缓存

-:http://code.google.com/p/ehcache-spring-annotations/

需要的jar包,首先需要的是我们之前做SpringMVC时的各个Spring的jar包

然后需要把ehcache-spring-annotations-1.2.0文件夹内lib内的,非spring的jar加进去,因为我们已经增加了我们版本的spring

然后还需要动态代理的cglib包

在spring主配置文件中配置ehcache注解的使用:

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:mvc="http://springframework.org/schema/mvc"

xmlns:p="http://springframework.org/schema/p"

xmlns:context="http://springframework.org/schema/context"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans-3.0.xsd

http://springframework.org/schema/context

http://springframework.org/schema/context/spring-context-3.0.xsd

http://springframework.org/schema/aop

http://springframework.org/schema/aop/spring-aop-3.0.xsd

http://springframework.org/schema/tx

http://springframework.org/schema/tx/spring-tx-3.0.xsd

http://springframework.org/schema/mvc

http://springframework.org/schema/mvc/spring-mvc-3.0.xsd

http://springframework.org/schema/context

http://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">

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:mvc="http://springframework.org/schema/mvc"

xmlns:p="http://springframework.org/schema/p"

xmlns:context="http://springframework.org/schema/context"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans-3.0.xsd

http://springframework.org/schema/context

http://springframework.org/schema/context/spring-context-3.0.xsd

http://springframework.org/schema/aop

http://springframework.org/schema/aop/spring-aop-3.0.xsd

http://springframework.org/schema/tx

http://springframework.org/schema/tx/spring-tx-3.0.xsd

http://springframework.org/schema/mvc

http://springframework.org/schema/mvc/spring-mvc-3.0.xsd

http://springframework.org/schema/context

http://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.xml,改文件放在SRC下:

xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"

updateCheck="false">

overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" />

overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />

xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"

updateCheck="false">

overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" />

overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />

overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" />

overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />

overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />

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") DvBLUZOZ

public String getName(String code){

System.out.println("查询编号:" + code);

return new Date().toLocaleString() + "-->" + code;

}

@SuppressWarnings("deprecation")

@Transactional(propagation = Propagation.REQUIRED)

public String update(String code){

System.out.println("更新编号:" + code);

return new Date().toLocaleString() + "-->" + code;

}

@TriggersRemove(cacheName="testCache",removeAll=true)

public void flush(){

System.out.println("情况缓存");

System.out.println("Processing testFlushing");

}

}

改类包含根据参数获取缓存值,更新缓存,情况缓存,都是使用注解标签实现。

Action类需要改动一下,代码如下:

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;

}

}

根据key做不同的操作,然后分别访问以下几个路径,为了方便看效果和学习,我把工程代码放到了附件:

第一次没有缓存

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序直播插件(小程序直播插件申请)
下一篇:跨平台app开发框架(跨平台app开发框架pc)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~