Spring中AOP实现EHCache的整合(一)
?????????? 在项目中使用缓存我OSCache,今天有时间将所有的EHCache的缓存的应用关注一下。首先我们看看Spring和EHCache采用AOP实现的缓存实现。
?
1.首先使用EHCache编写EHCache的配置文件。
?2.编写AOP的方法拦截器,此处采用环绕通知的方式实现方法拦截。
?
3.Spring的关于缓存的配置类似事物的配置:
package com.easyway.ecache.service;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 这里使用了ehcache与spring结合,这里并没用用到数据库,用spring只是用来管理bean, * 这里用ehcache就相当于数据库,存放对象信息 * @author longgangbai */ @SuppressWarnings({"unchecked"}) public class HelloEhcacheSpring{ public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:applicationContext.xml"); TicketService ticketSrv = (TicketService) context.getBean("ticketService"); //配置了spring就可以从配置文件里找到对应的接口实现类,再生成实例对象,以完成业务处理 String srvName0=ticketSrv.testMethod(); //获取初始化服务端名称 System.out.println("srvName0="+srvName0); //设置存储的名称 ticketSrv.setServiceName("ticketService"); String srvName1=ticketSrv.testMethod(); //获取服务端名称 System.out.println("srvName1="+srvName1); //修改服务名称但是不缓存 ticketSrv.updateMethod(); String srvName2=ticketSrv.testMethod(); //获取服务端名称来源自缓存注意观察 System.out.println("srvName2="+srvName2); } }?
6.测试结果:
没走缓存,直接调用TestService.testMethod()
打印信息如下:
set into cache
out cache
srvName0=china
out cache
srvName1=china
updateMethod
out cache
srvName2=china?