<aop:config> <!-- 事务切入点通知 --> <aop:advisor advice-ref="txAdvice" pointcut="execution(* *..*Service.*(..))" order="2"/> <!-- 缓存切入点通知 --> <aop:advisor advice-ref="cacheAdvice" pointcut="execution(* *..*Service.*(..))" order="0"/> </aop:config>
<!-- 缓存管理器 --> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> <property name="cacheManager" ref="cacheManagerFactoryBean" /> </bean> <!-- 缓存管理器工厂bean --> <bean id="cacheManagerFactoryBean" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="classpath:ehcache.xml" /> </bean> <!-- 自定义缓存key生成器 --> <bean id="surveyparkKeyGenerator" class="com.surveypark.cache.SurveyparkKeyGenerator" /> <!-- 缓存通知 --> <cache:advice id="cacheAdvice" cache-manager="cacheManager" key-generator="surveyparkKeyGenerator"> <cache:caching cache="surveyparkCache"> <cache:cacheable method="get*" /> <cache:cacheable method="load*" /> <cache:cacheable method="find*" /> <cache:cache-evict method="save*" all-entries="true" /> <cache:cache-evict method="update*" all-entries="true"/> <cache:cache-evict method="delete*" all-entries="true"/> <cache:cache-evict method="clear*" all-entries="true"/> <cache:cache-evict method="toggle*" all-entries="true"/> <cache:cache-evict method="move*" all-entries="true"/> <cache:cache-evict method="batch*" all-entries="true"/> <cache:cache-evict method="execute*" all-entries="true"/> </cache:caching> </cache:advice>
ehcache.xml
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"> <diskStore path="java.io.tmpdir"/> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> <cache name="surveyparkCache" maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> </ehcache>
public class SurveyparkKeyGenerator implements KeyGenerator{ public Object generate(Object arg0, Method arg1, Object... arg2) { String className = arg0.getClass().getSimpleName(); String mname = arg1.getName(); String params = StringUtil.arr2Str(arg2); String key = className + "@" + arg0.hashCode() + "." + mname + "("+params+")" ; return key; } }
StringUtil.java
public static String arr2Str(Object[] arr) { String temp = "" ; if(ValidateUtil.isValid(arr)){ for(Object s : arr){ temp = temp + s + "," ; } return temp.substring(0,temp.length() - 1); } return temp; }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
**Spring+EhCache缓存实例详解** 在现代的Java企业级应用中,缓存技术扮演着至关重要的角色,它能够显著提升系统性能,减少数据库负载。Spring框架与EhCache的结合,为开发者提供了一种高效、易用的缓存解决方案。...
首先,我们需要理解Spring的AOP概念,AOP允许我们定义横切关注点,如日志、事务管理或,正如在这个案例中,缓存管理。Spring通过代理模式实现了AOP,可以自动在目标方法调用前后执行特定的逻辑,这为我们实现方法...
在缓存管理方面,Spring 提供了 Spring Cache抽象层,可以方便地集成各种缓存实现,如Ehcache、Hazelcast或Redis。 **Ehcache** 是一个广泛使用的Java缓存库,适合在内存中存储数据。它提供了一种快速访问最近使用...
Ehcache缓存简介 1、基础简介 EhCache是一个纯Java的进程内缓存框架,具有快速、上手简单等特点,是Hibernate中默认的缓存提供方。 2、Hibernate缓存 Hibernate三级缓存机制简介: 一级缓存:基于Session级别分配...
本文将详细讲解"cache/ehcache缓存使用"的相关知识点,包括缓存的基本概念、Ehcache的介绍、以及如何在Java应用中使用Ehcache进行缓存操作。 首先,我们要理解什么是缓存。缓存是一种存储技术,它临时存储常用或...
Ehcache与Spring的整合使得开发人员能够更加方便地管理和优化应用的缓存策略。通过对页面、对象和数据的缓存,不仅可以显著提高系统的响应速度,还能有效减轻数据库的负载,提升整体性能。通过上述步骤,您可以轻松...
默认情况下,Spring Boot的`@EnableCaching`注解会使用`ConcurrentHashMap`作为基本的缓存管理器。然而,对于生产环境,我们通常需要更强大的缓存解决方案,如EhCache。EhCache是一个开源、内存级别的缓存框架,提供...
Ehcache是一个高性能的、基于Java的进程内缓存解决方案,它被广泛应用于各种Java应用程序,包括Java EE和轻量级容器。Ehcache的主要优势在于它的快速响应、易用性和丰富的缓存策略。它提供了两种级别的缓存存储:...
Spring对ehCache的支持使得集成更加简便,我们可以利用Spring的缓存抽象来管理ehCache实例,包括设置缓存策略、大小限制等。 为了实现数据更新时的缓存刷新,我们可以利用Spring的事件驱动模型。当创建、更新或删除...
(见下图,为了减少get这几条网络传输,我们会在每个应用服务器上增加本地的ehcache缓存作为二级缓存,即第一次get到的数据存入ehcache,后面output输出即可从本地ehcache中获取,不用再访问redis了,所以就减少了...
1.通过google ehcache-spring-annotatios.jar自动注解方式实现整合Spring+Ehcache。 2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。...
为了解决这个问题,我们需要配置EhCache缓存集群,以确保数据更新能在各个进程中同步。以下是如何使用EhCache实现缓存集群的详细步骤: 首先,确保缓存对象是可序列化的。在上述例子中,`User`实体需要实现`...
本篇文章将详细介绍如何在Spring项目中集成Ehcache,以及如何通过Spring的AOP(面向切面编程)实现方法级别的缓存注解。 首先,我们需要在项目中引入Ehcache的依赖。通常,这可以通过在`pom.xml`文件中添加Maven...
在Spring的配置文件(如`applicationContext.xml`)中,定义一个`cache-manager` bean,用于管理所有的缓存。配置可能包括设置缓存的默认属性,如最大元素数量、存活时间和过期时间等。示例如下: ```xml ...
首先,Spring Boot自动配置缓存管理器时会按照特定的顺序检测可用的缓存提供商。默认情况下,它会尝试找到以下缓存实现:Generic、JCache (JSR-107)、EhCache 2.x、Hazelcast、Infinispan、Couchbase、Redis和...
例如,如果选择EhCache作为缓存管理器,需要添加对应的bean定义,并配置相关的属性,如缓存的名称、大小限制等。 3. **使用缓存注解**: - `@Cacheable`:此注解用于标记那些结果可以被缓存的方法。当方法被调用时...
下面将详细介绍如何在一个Spring Boot项目中集成并使用Ehcache缓存。 ##### 1. 创建项目 首先,使用IDEA创建一个Maven类型的Spring Boot项目。确保项目结构符合Spring Boot的标准。 ##### 2. 数据库初始化 为了...
"ehcache缓存依赖的jar"这个标题暗示我们将讨论Ehcache的核心库及其依赖关系。 Ehcache的核心JAR文件是`ehcache.jar`,它包含了Ehcache的所有核心组件和接口。这个文件提供了缓存管理、缓存配置、缓存策略(如LRU、...
- 配置Spring:在Spring配置文件中启用缓存管理器,并指定使用Ehcache。 - 使用注解:在需要缓存的方法上添加`@Cacheable`、`@CacheEvict`等注解。 **二、Spring Cache注解** 1. **@Cacheable** 此注解用于标记...