`
这些年
  • 浏览: 397818 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring + Ehcache 注解形式配置(转)

 
阅读更多

Spring3.1 +Ehcache 注解形式配置

1.Spring配置文件

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:p="http://www.springframework.org/schema/p" xmlns:cache="http://www.springframework.org/schema/cache"  
  5.   
  6.     xsi:schemaLocation="  
  7.             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  8.             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd  
  9.             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  10.             http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd"  
  11.     default-lazy-init="false" default-autowire="byName">  
  12.       
  13.     <context:annotation-config />  
  14.     <context:component-scan base-package="com.miao" />  
  15.       
  16.     <!-- 启用缓存注解功能 -->  
  17.     <cache:annotation-driven cache-manager="cacheManager"/>  
  18.   
  19.     <!-- cacheManager工厂类 -->   
  20.     <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"   
  21.         p:configLocation="classpath:ehcache.xml" />   
  22.   
  23.     <!-- 声明cacheManager -->  
  24.     <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"   
  25.         p:cacheManager-ref="cacheManagerFactory" />   
  26.           
  27.   
  28.   
  29. </beans>  

 

 

2.ehcache文件

Xml代码  收藏代码
  1. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">  
  2.     <!--   
  3.         diskStore :指定数据存储位置,可指定磁盘中的文件夹位置  
  4.         defaultCache : 默认的管理策略  
  5.           
  6.         以下属性是必须的:  
  7.             name: Cache的名称,必须是唯一的(ehcache会把这个cache放到HashMap里)。maxElementsInMemory:在内存中缓存的element的最大数目。   
  8.             maxElementsOnDisk:在磁盘上缓存的element的最大数目,默认值为0,表示不限制。   
  9.             eternal:设定缓存的elements是否永远不过期。如果为true,则缓存的数据始终有效,如果为false那么还要根据timeToIdleSeconds,timeToLiveSeconds判断。   
  10.             overflowToDisk: 如果内存中数据超过内存限制,是否要缓存到磁盘上。   
  11.               
  12.         以下属性是可选的:  
  13.             timeToIdleSeconds: 对象空闲时间,指对象在多长时间没有被访问就会失效。只对eternal为false的有效。默认值0,表示一直可以访问。  
  14.             timeToLiveSeconds: 对象存活时间,指对象从创建到失效所需要的时间。只对eternal为false的有效。默认值0,表示一直可以访问。  
  15.             diskPersistent: 是否在磁盘上持久化。指重启jvm后,数据是否有效。默认为false。   
  16.             diskExpiryThreadIntervalSeconds: 对象检测线程运行时间间隔。标识对象状态的线程多长时间运行一次。   
  17.             diskSpoolBufferSizeMB: DiskStore使用的磁盘大小,默认值30MB。每个cache使用各自的DiskStore。   
  18.             memoryStoreEvictionPolicy: 如果内存中数据超过内存限制,向磁盘缓存时的策略。默认值LRU,可选FIFO、LFU。   
  19.           
  20.             缓存的3 种清空策略 :  
  21.             FIFO ,first in first out (先进先出).  
  22.             LFU , Less Frequently Used (最少使用).意思是一直以来最少被使用的。缓存的元素有一个hit 属性,hit 值最小的将会被清出缓存。  
  23.             LRU ,Least Recently Used(最近最少使用). (ehcache 默认值).缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。  
  24.      -->  
  25.   
  26.     <diskStore path="java.io.tmpdir"/>  
  27.   
  28.     <defaultCache  
  29.             maxElementsInMemory="10000"  
  30.             eternal="false"  
  31.             timeToIdleSeconds="520"  
  32.             timeToLiveSeconds="520"  
  33.             overflowToDisk="true"  
  34.             maxElementsOnDisk="10000000"  
  35.             diskPersistent="false"  
  36.             diskExpiryThreadIntervalSeconds="120"  
  37.             memoryStoreEvictionPolicy="LRU"  
  38.             />  
  39.               
  40.     <cache   name="testCache"   
  41.             maxElementsInMemory="10000"  
  42.             maxElementsOnDisk="1000"   
  43.             eternal="false"   
  44.             overflowToDisk="true"  
  45.             diskSpoolBufferSizeMB="20"   
  46.             timeToIdleSeconds="300"   
  47.             timeToLiveSeconds="600"  
  48.             memoryStoreEvictionPolicy="LFU" />  
  49. </ehcache>  

  

 

3.测试类的代码

Java代码  收藏代码
  1. package com.miao.service.user;  
  2.   
  3. import java.util.List;  
  4.   
  5. import javax.annotation.Resource;  
  6.   
  7. import org.springframework.cache.annotation.CacheEvict;  
  8. import org.springframework.cache.annotation.Cacheable;  
  9. import org.springframework.stereotype.Service;  
  10.   
  11. import com.miao.dao.user.UserDao;  
  12.   
  13. @Service("userService")  
  14. public class UserServiceImp implements UserService{  
  15.       
  16.     @Resource  
  17.     private UserDao userDao;  
  18.       
  19.     /** 
  20.      * Cacheable 参数意义 
  21.      * value:缓存位置名称,不能为空,对应ehcache.xml中声明的cache的name 
  22.      * key:缓存的key,默认为空,既表示使用方法的参数类型及参数值作为key,支持SpEL 
  23.      * condition:触发条件,只有满足条件的情况才会加入缓存,默认为空,既表示全部都加入缓存,支持SpEL 
  24.      *  
  25.      */  
  26.   
  27.     @Override  
  28.     @Cacheable(value="testCache")           //指定cache  
  29.     public List getAllUsers() {  
  30.         return userDao.getAllUsers();  
  31.     }  
  32.   
  33.     @Override  
  34.     //@Cacheable(value="testCache",key="#id +'getUserById'")          
  35.     @Cacheable(value="testCache",key="'getUserById('+#id+')'")      //指定cache, 设置key  
  36.     public List getUserById(String id) {  
  37.         return userDao.getUserById(id);  
  38.     }  
  39.   
  40.     @Override  
  41.     //@CacheEvict(value="testCache",key="'getUserById('+#id+')'")           //清除指定缓存 (业务逻辑修改了某个User,所以要将这个User的缓存清除;其实也要将获取所有User的缓存清除)  
  42.     //@CacheEvict(value="testCache",allEntries=true)                    //清除所有的缓存  
  43.     @CacheEvict(value="testCache",allEntries=true,condition="#id=='lisi'")  //当id==“lisi”时,清除所有的缓存  
  44.     public boolean modifyUserById(String id) {  
  45.         return true;  
  46.     }  
  47.       
  48.   
  49. }  

   

 

4.调用方法进行测试即可

分享到:
评论

相关推荐

    Spring + Ehcache 注解形式配置

    本文将深入探讨如何在Spring框架中通过注解方式配置Ehcache,以便优化应用程序的性能。 首先,让我们理解Spring与Ehcache结合的基本概念。Ehcache是一个内存缓存系统,它可以存储数据到内存中,从而减少数据库的...

    spring + ehcache + redis两级缓存

    在Spring中,我们可以配置Ehcache作为缓存 provider,通过注解或XML配置来启用和管理缓存。 **Redis** 是一个高性能的键值数据库,常被用作分布式缓存系统。相比于Ehcache,Redis支持更丰富的数据结构(如字符串、...

    spring+ehcache示例整合Demo

    Spring 和 Ehcache 是两个在Java开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,使得应用程序的构建变得更加简洁和模块化。Ehcache...

    Struts2+Spring+Hibernate+Ehcache+AJAX+JQuery+Oracle 框架集成用户登录注册Demo工程

    1.通过google ehcache-spring-annotatios.jar自动注解方式实现整合Spring+Ehcache。 2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。...

    spring3.2+ehcache 注解使用

    在本文中,我们将深入探讨如何在Spring 3.2框架中使用Ehcache注解进行缓存管理。Ehcache是一种流行的Java缓存解决方案,它能够显著提高应用程序的性能,尤其是在处理频繁读取但更新不频繁的数据时。Spring 3.2引入了...

    spring+ehcache demo

    总结,这个"spring+ehcache demo"是一个全面的示例,涵盖了从引入Ehcache依赖、配置Spring Cache到编写缓存注解的方法。通过学习和实践这个示例,开发者可以深入了解Spring与Ehcache的集成,以及如何利用缓存提升...

    Spring+Ehcache集成

    本篇文章将详细介绍如何在Spring项目中集成Ehcache,以及如何通过Spring的AOP(面向切面编程)实现方法级别的缓存注解。 首先,我们需要在项目中引入Ehcache的依赖。通常,这可以通过在`pom.xml`文件中添加Maven...

    spring+ibatis+ehcache整合例子

    Ehcache的配置包括在Spring配置文件中声明CacheManager,以及定义需要缓存的bean和对应的缓存策略。 4. **编写Mapper接口和XML映射文件** iBatis中的Mapper接口对应数据库操作,XML映射文件定义了SQL语句和结果...

    spring+ehcache完整示例demo

    3. **Spring配置**:在Spring的配置文件(如applicationContext.xml)中启用Ehcache支持,并加载上面的ehcache.xml配置。例如: ```xml &lt;bean id="cacheManager" class="org.springframework.cache.ehcache....

    SpringMVC+Mybatis+Spring+Shiro+ehcache整合配置文件

    Ehcache可以很好地与Spring集成,通过简单的配置即可实现缓存管理。 在整合这些技术时,首先需要在Spring的配置文件中定义bean,包括数据源、SqlSessionFactory(Mybatis的核心)、MapperScannerConfigurer(扫描...

    springMVC+mybatis+ehcache整合

    在Spring中整合Ehcache,可以通过Spring的缓存抽象进行配置,定义缓存注解如`@Cacheable`、`@CacheEvict`、`@CachePut`来控制缓存的存取和清除。Ehcache的配置文件(ehcache.xml)可以指定缓存的大小、存活时间和...

    Spring+Hibernate+ehcache整合

    1. **Spring配置**:Spring的配置文件(如`applicationContext.xml`)会定义bean,包括数据源、SessionFactory(Hibernate)、缓存管理器(Ehcache)以及业务层和服务层的组件。通过依赖注入,Spring将这些组件装配...

    Spring+EhCache缓存实例

    本文将深入探讨Spring如何与EhCache协同工作,以及如何在实际项目中实施和配置。 **1. EhCache简介** EhCache是Java的一个开源、高性能、可扩展的缓存库,它支持内存和磁盘存储,可以进行分布式缓存。EhCache提供...

    Ehcache(一): Spring + Ehcache开场白

    配置Ehcache,我们可以在Spring的配置文件中定义一个`CacheManager` bean,指定Ehcache的配置文件路径。Ehcache的配置文件(如ehcache.xml)包含了缓存的命名空间、大小限制、过期策略等信息。例如: ```xml ...

    Spring+ehcache整合

    3. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,添加Ehcache的bean配置,以使Spring能够管理Ehcache: ```xml &lt;bean id="cacheManager" class="org.springframework.cache.ehcache....

    spring+ehcache

    - 配置Spring:在Spring配置文件中启用缓存管理器,并指定使用Ehcache。 - 使用注解:在需要缓存的方法上添加`@Cacheable`、`@CacheEvict`等注解。 **二、Spring Cache注解** 1. **@Cacheable** 此注解用于标记...

    spring3整合EhCache注解实例

    spring3整合EhCache注解实例

    spring boot 使用jsp 集成hibernate+shiro+ehcache项目分享

    【Spring Boot 使用 JSP 集成 Hibernate+Shiro+Ehcache 项目详解】 Spring Boot 是一个基于 Spring 框架的高度集成了多种技术的开发工具,它简化了配置过程,使得开发人员能够快速构建可运行的应用程序。在这个项目...

    spring整合EhCache 基于注解的方式

    本例子主要讲解ehcache的配置使用。采用了java配置和xml配置两种方式。主要用于学习。 使用java配置时将SpringTestCase.java 文件中的@ContextConfiguration(locations = { "classpath:applicationContext.xml" }) ...

Global site tag (gtag.js) - Google Analytics