Spring基于注解ehCache缓存整合

注解的使用参照:http://blog.csdn.net/wjacketcn/article/details/50945887 (侵删)

ehCache是纯java实现的缓存组件,spring从3.1开始引入了对ehcache的支持。

使用:

  1、在pom.xml中添加依赖

     <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>2.9.1</version>
        </dependency>

  2、在classPath下增加ehcache配置文件ehcache.xml

  <?xml version="1.0" encoding="UTF-8"?>
        <ehcache updateCheck="false">
            <diskStore path="java.io.tmpdir"/>
            <defaultCache
                maxElementsInMemory="10000"
                eternal="false"
                timeToIdleSeconds="120"
                timeToLiveSeconds="120"
                overflowToDisk="true"
                diskPersistent="false"
                diskExpiryThreadIntervalSeconds="120"
                memoryStoreEvictionPolicy="LRU"
                />        <!--这个名称会用到-->
            <cache name="myCache"      
               maxElementsInMemory="10000"
               eternal="false"
               overflowToDisk="true"
               timeToIdleSeconds="30"
               timeToLiveSeconds="60"
               memoryStoreEvictionPolicy="LFU"
                />
        </ehcache>

  3、applicationContext.xml 添加配置(类似于事物配置)

     <!--开启缓存的注解功能,否则注解无法生效-->
        <cache:annotation-driven />
        <!-- 声明缓存管理器 -->
        <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
            <property name="cacheManager" ref="ehCacheFactory"></property>
        </bean>
        <!--指定工厂类及ehcache.xml文件位置-->
        <bean id="ehCacheFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
            <property name="configLocation" value="classpath:ehcache.xml"/>
        </bean>

  4、在service层添加注解

     @Cacheable(value="myCache")  //这个名称就是ehcache.xml文件中的name属性的值
        public List<FreeUrl> findAll(){
            return freeUrlMapper.findAll();
        }

案例:拦截器放过免认证的路径

  创建表:freeUrl

      CREATE TABLE `freeurl` (
        `id` int(11) NOT NULL,
        `url` varchar(255) DEFAULT NULL,
        PRIMARY KEY (`id`)
      )

  上述配置完成之后进行如下配置

  1、在spring-mvc.xml中配置拦截器路径  

     <mvc:interceptors>
           <bean class="com.util.interceptors.LoginInterceptors"/>
        </mvc:interceptors>

  2、编写service代码并将查询结果存入缓存

     @Cacheable(value="myCache")
        public List<FreeUrl> findAll(){
            return freeUrlMapper.findAll();
        }

  3、编写拦截器代码

    public class LoginInterceptors extends HandlerInterceptorAdapter{
            private Logger log = LogManager.getLogger(LoginInterceptors.class);
            @Resource
            private FreeUrlService freeUrlService;

            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                    throws Exception {
                //获取项目路径
                String contextPath = request.getContextPath();
                //获取访问路径
                String requestPath = request.getServletPath();

                HttpSession session = request.getSession();

                //查询免认证路径
                List<FreeUrl> list = freeUrlService.findAll();
                for (FreeUrl freeUrl : list) {
                    //如果请求路径为免认证路径则放开
                    if(freeUrl.getUrl().equals(requestPath)){
                        return true;
                    }
                }
                return false;
            }
        }

4、效果查看

     启动项目之后第一次访问时会调用freeUrlService.findAll()查询数据库,同时将查询结果放入缓存。第二次及后面的访问会直接从缓存中获取已经存入的结果,
不会再去访问数据库。可以通过打印SQL来看,除了第一次访问的时候会查询数据库,后面的查询都是从缓存中获取。

  

时间: 2024-10-29 02:47:15

Spring基于注解ehCache缓存整合的相关文章

缓存初解(三)---Spring3.0基于注解的缓存配置+Ehcache和OScache

本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中提供对许多第三方缓存方案的支持,包括: EHCache OSCache(OpenSymphony) JCS GigaSpaces JBoss Cache 等等. 将这些第三方缓存方案配置在spring中很简单,网上有许多介绍,这里只重点介绍如何配置基于注解的缓存配置. 本文将通过例举EHCache和

缓存初解(五)---SpringMVC基于注解的缓存配置--web应用实例

之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见 Spring基于注解的缓存配置--EHCache AND OSCache 现在介绍一下如何在基于注解springMVC的web应用中使用注解缓存,其实很简单,就是将springMVC配置文件与缓存注解文件一起声明到context中就OK了. 下面我就来构建一个基于spring注解小型的web应用,这里我使用EHCache来作为缓存方案 jar依赖: ehcache-core-1.7.

spring基于注解的IOC(2)

spring第二天:spring基于注解的IOC以及IoC的案例1.spring中ioc的常用注解 用于创建对象的:Component.Controller.Service.Repository 用于注入数据的:Autowired.Qualifier.Resource.Value 用于改变作用范围的:Scope . 和生命周期相关:PreDestroy .PostConstruct 2.案例使用xml方式和注解方式实现单表的CRUD操作 持久层技术选择:dbutils3.改造基于注解的ioc案例

结合项目(Spring+(基于注解的)SpringMVC和Mybatis+uploadify文件上传)--poi解析Excel文件

poi解析Excel文件 1.上传文件至服务器 2.解析Excel文件并返回数据集合 3.将数据保存到服务器 框架======Spring+(基于注解的)SpringMVC和Mybatis===== 第一步: 前台: jsp文件采用的是uploadify <div id="fileQueue"></div> <input type="file" id="brandFile"> js: <script ty

阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置

复制依赖和改jar包方式 src下的都复制过来. 复制到新项目里了 bean.xml里面复制上面一行代码到下面.把aop改成context. 配置spring容器创建时要扫描的包 Service的配置这里就可以删除了 配置注解 使用@Service注解 开始AOP配置 把通知类交给Spring来管理 在Logger上加注解.之类注意,@Service和@Repository都不合适.因为logger属于三层 所以这里用@Component这个注解来配置 写完上面的@Component的注解后.b

28、springboot——缓存之JSR107——基于注解的缓存使用②

一.使用缓存: 1.开启基于注解的缓存    @EnableCaching 2.标注缓存即可 二.具体实例 上一节创建好基本环境后每一次访问查询都会进行sql查询: 我访问三次上面的链接每次都会进行sql查询: 打印是在service中执行的 @Service public class EmployeeService { @Autowired EmployeeMapper employeeMapper; public Employee getEmp(Integer id){ System.out

Ehcache——基于注解的缓存使用

ehcache是一个非常轻量级的缓存实现,而且从1.2之后就支持了集群,而且是hibernate默认的缓存provider.EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache的分布式缓存有传统的RMI,1.5版的JGroups,1.6版的JMS.分布式缓存主要解决集群环境中不同的服务器间的数据的同步问题. 使用Spring的AOP进行整合,可以灵活的对方法的返回结果对象进行缓存. CachingFilt

Spring基于注解TestContext 测试框架使用详解

概述 Spring 2.5 相比于 Spring 2.0 所新增的最重要的功能可以归结为以下 3 点: 1.基于注解的 IoC 功能:  2.基于注解驱动的 Spring MVC 功能:  3.基于注解的 TestContext 测试框架. Spring 推荐开发者使用新的基于注解的 TestContext 测试框架,本文我们将对此进行详细的讲述. 低版本的 Spring 所提供的 Spring 测试框架构在 JUnit 3.8 基础上扩展而来,它提供了若干个测试基类.而 Spring 2.5

Spring Boot 集成 Ehcache 缓存,三步搞定!

本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能.在Spring Boot应用程序中,我们可以通过Spring Caching来快速搞定数据缓存. 接下来我们将介绍如何在三步之内搞定 Spring Boot 缓存. 1. 创建一个Spring Boot工程 你所创建的Spring Boot应用程序的maven依赖文件至少应该是下面的样子: <?xml version="1.0" encoding="UTF-8"?