`

Spring Cache编写实例

 
阅读更多
首先我们来看一下如何使用spring3.1自己的cache,
需要在命名空间中增加cache的配置

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	 xmlns:cache="http://www.springframework.org/schema/cache"
	xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
			http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd">


然后加入申明处理

       <!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配置文件中才会生效 -->
	<cache:annotation-driven cache-manager="cacheManager"/>


	<!-- spring自己的换管理器,这里定义了两个缓存位置名称 ,既注解中的value -->
	<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
		<property name="caches">
			<set>
				<bean
					class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean"
					p:name="default" />
				<bean
					class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean"
					p:name="andCache" />
			</set>
		</property>
	</bean> 


然后在Dao类中加入缓存方法  andCache是存储的地方 eventi是Key值用于寻找存储实例
 @Cacheable(value = "andCache", key = "#eventid")
	  public XX getCache(String eventid)
	  {
		  System.out.println("进来了");
		  return this.get(eventid);
	  }

调用getCache方法的时候它会去andCache这个地方寻找有没有以Key为主键的缓存,如果有则不调用方法,没有则调用该方法。

本人测试过程中发现转换错误:
org.springframework.beans.TypeMismatchException: Failed to convert property value of type [$Proxy11 implementing XX,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [XX] for prop


解决方法是在AOP的配置中加入注入策略方式:

<tx:advice id="transactionInterceptor" transaction-manager="hibernateManager">
		<tx:attributes>
			<tx:method name="find*" propagation="SUPPORTS" read-only="true" timeout="300" />
			<tx:method name="query*" propagation="SUPPORTS" read-only="true" timeout="300" />
			<tx:method name="is*" propagation="SUPPORTS" read-only="true" timeout="300" />
			<tx:method name="batch*" propagation="REQUIRED" isolation="READ_COMMITTED" timeout="1800" rollback-for="Throwable" />
			<tx:method name="audit*" propagation="REQUIRES_NEW" isolation="READ_COMMITTED" timeout="600" rollback-for="Throwable" />
			<tx:method name="*" propagation="REQUIRED" isolation="READ_COMMITTED" timeout="300" rollback-for="Throwable" />
		</tx:attributes>
	</tx:advice>
	<aop:config proxy-target-class="true">
		<aop:advisor advice-ref="transactionInterceptor" pointcut="execution(* com.jasgroup..*.service.impl..*.*(..))" order="40" />
		<aop:advisor advice-ref="transactionInterceptor" pointcut="execution(* cn.jasgroup..*.service.impl..*.*(..))" order="41" />
		<aop:advisor advice-ref="transactionInterceptor" pointcut="execution(* cn.jasgroup..*.services.impl..*.*(..))" order="41" />
	</aop:config>


在aop:config标签中加入proxy-target-class="true"这句话就能解决。同时需要cglib.jar文件。

注意:proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。如果proxy-target-class 属性值被设置为true,那么基于类的代理将起作用(这时需要cglib库)。如果proxy-target-class属值被设置为false或者这个属性被省略,那么标准的JDK基于接口的代理。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    SpringAOP结合ehCache实现简单缓存实例

    &lt;bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"&gt; ``` 在ehcache.xml中,你可以定义具体的缓存设置,如大小、存活时间等。 3. **创建缓存注解**:在Spring ...

    Spring Boot Cache使用方法整合代码实例

    Spring Boot Cache 使用方法整合代码实例 Spring Boot Cache 是一个基于 Java 语言的缓存框架,它提供了一种简单且高效的缓存机制,可以帮助开发者快速实现缓存功能。在本文中,我们将详细介绍 Spring Boot Cache ...

    springmvc+spring4+hibernate5架构搭建实例

    例如,可以结合Spring Security提供身份验证和授权,使用缓存机制(如Spring Cache或Hibernate二级缓存)提高效率,编写单元测试和集成测试确保代码质量。 总的来说,Spring MVC+Spring 4+Hibernate 5的架构提供了...

    spring官方完整jar包-4.1.6版

    8. **测试支持**:Spring提供了一个测试框架,支持单元测试和集成测试,方便编写模拟对象和声明式事务。 9. **Spring Boot**:虽然4.1.6版本的Spring不包含Spring Boot,但它是后来的一个重要分支,简化了Spring...

    spring缓存

    CacheManager是全局缓存管理器,负责创建和管理多个Cache实例。Cache实例存储键值对,Element封装了缓存的数据和元信息。 2.2 环境搭建 首先,需要在项目中引入EHCache的依赖,并配置相应的XML文件,定义缓存名称、...

    spring-Acgei的一个小例子之二

    这个war文件使用了Spring 1.2.8版本,这表明了该示例是基于早期的Spring版本编写的。 #### 二、Acegi Security中的用户缓存 在Acegi Security中,用户缓存(User Cache)是一种优化机制,它可以减少对数据库的访问...

    jetcache:JetCache是​​一个Java缓存框架

    JetCache中的注释支持本地TTL,两级缓存和分布式自动刷新,您也可以手动编写Cache实例。 当前有四个工具: RedisCache , TairCache (在github上不是开源的), CaffeineCache (在内存中),一个简单的...

    Struts2+spring2+hibernate3实例源码-java源码

    ### Struts2 + Spring2 + Hibernate3 整合实例源码分析 #### 一、概述 随着企业级应用的发展,为了提高开发效率和系统维护性,越来越多的项目开始采用MVC设计模式。其中,Struts2作为MVC框架中的佼佼者,在前端...

    spring+ehcache demo

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

    spring-framework-4.1.4.release-schema

    5. **cache**: `cache`目录下的Schema文件是Spring对缓存支持的定义,如支持EhCache、Hibernate二级缓存等。它允许开发者轻松地将缓存机制集成到应用中,提高性能。 6. **lang**: `lang`模块提供了对动态语言的支持...

    Spring MVC 配置 urlrewrite 实例

    在Spring MVC框架中,URL重写是...记住,`urlrewrite.xml`文件的灵活性非常高,你可以根据实际需求编写复杂的规则,实现更精细化的URL控制。在实践中,不断调整和完善这些规则,可以让你的Web应用具有更好的用户体验。

    cache-demo-2.5.zip_Cache2.5_DEMO_cache

    "cache-demo"部分表示这是一个用于演示缓存功能的实例,而"2.5"则代表这是该功能的第2.5个版本,通常意味着它可能包含了前一版本的改进和新特性。 【描述】"cache-demo cache管理,阿里巴巴系统cache管理" 描述了这...

    Spring Boot中使用EhCache实现缓存支持

    其中,`spring.cache.type`指定了缓存技术类型,`spring.cache.ehcache.config`指定了EhCache的配置文件路径。 3. **编写EhCache配置文件** 创建`ehcache.xml`文件,配置具体的缓存策略。例如: ```xml ...

    spring +hibernate 详解与配置(附图)

    - 例如,可以使用Spring Cache API来自动缓存Hibernate查询的结果,减少不必要的数据库交互。 综上所述,Spring与Hibernate的结合不仅可以大大简化开发流程,还能提高系统的稳定性和可维护性。通过合理配置和利用...

    spring-learn.zip

    1. 预初始化:默认情况下,Spring的bean默认为懒加载(Lazy),只有在被请求时才会实例化。但若涉及循环依赖,Spring会提前初始化相关的bean,以解决循环引用。 2. 早周期引用:Spring通过早周期引用来解决部分循环...

    spring+springMVC+Mybaits整合

    在实际开发中,还需要根据项目需求进行调整,例如添加安全框架(Spring Security)、缓存支持(Spring Cache)等。总之,SSM整合提供了一套强大的基础架构,为Java开发者构建现代Web应用提供了便利。

    搭建SpringMVC(数据访问 Springdata)

    Spring Security可以用来保护应用,@ControllerAdvice可以全局处理异常,MessageSource支持多语言,而Spring Cache可以帮助优化性能。 以上就是SpringMVC和SpringData集成的基本过程和主要知识点。通过熟练掌握这些...

    spring-boot-starter-mybatis-spring-boot-2.1.3.tar.gz

    2. MyBatis Cache:通过配置,可以实现MyBatis的缓存机制,提高数据访问速度。 3. Transaction管理:Spring Boot的事务管理能力与MyBatis无缝对接,提供全局事务控制。 五、实战应用 在实际项目中,Spring Boot与...

    Spring整合EhCache

    从 Spring 3.1 版本开始,Spring 框架正式引入了对 Cache 的支持,这种支持的方式和原理与 Spring 对事务管理的支持非常类似。通过这种方式,开发人员可以在不增加大量额外代码的情况下轻松地集成缓存技术,从而提高...

    Spring Boot 整合mybatis redis netty 缓存 logback

    同时,他们也配置了Redis连接,可能使用了Spring Cache或Spring Data Redis来实现缓存功能。Netty可能被用来实现内部通信或者提供一种不同于默认HTTP服务的接口。而日志框架logback则负责记录应用程序的日志信息,...

Global site tag (gtag.js) - Google Analytics