`

Annotation实现缓存,Bean指定代码缓存类

 
阅读更多
	<!-- Ehcache拦截,使用代理来实现 -->
	<bean id="beanPostProcessor" class="org.frame.base.annotation.support.EhCacheBeanPostProcessor" >
		<property name="beans">
			 <set>
			 	<value>testI</value>
			 	<value>intabc</value>
			 </set>
		</property>
	</bean>


package org.frame.base.annotation.support;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.util.Set;

import org.frame.base.annotation.intercept.ProxyHandler;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
 * 使用Ehcache代理来实现缓存拦截 
 *
 */
public class EhCacheBeanPostProcessor implements BeanPostProcessor{
	
	private Set<String> beans;
	
	public void setBeans(Set<String>  beans) {
		this.beans = beans;
	}

	@Override
	public Object postProcessAfterInitialization(Object target, String beanName)
			throws BeansException { 
		return target;
	}

	/**
	 * will be process the beans define in properties
	 * if you don't want to define
	 * you can define the pach model  *DAO
	 * you can define the pach model  *Service
	 * you can define the pach model  *Action
	 * but i sugguest you define
	 */
	@Override
	public Object postProcessBeforeInitialization(Object target, String beanName)
			throws BeansException {
		if(beans.contains(beanName)){
			Class<?>[] interfaceClass = target.getClass().getInterfaces();
			InvocationHandler handler = new ProxyHandler(target);
			Object proxyObj = Proxy.newProxyInstance(target.getClass().getClassLoader(),
					interfaceClass, handler);
			return proxyObj;
		}else{
			return target;
		}
		
	} 
}


指定代理的类,这样去除缓存很简单,代码不需要更改,只需要从拦截的beans设置里面去掉该beanName,缓存就没了,添加只需要添加该bean定义。
分享到:
评论

相关推荐

    Spring 与Ehcache实现基于方法的缓存

    在Spring的配置文件中,启用缓存注解支持,并指定使用的缓存管理器。例如,使用`&lt;cache:annotation-driven&gt;`标签: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cache=...

    spring二级缓存

    使用`&lt;cache:annotation-driven/&gt;`元素开启基于注解的缓存控制,并通过`&lt;bean&gt;`标签配置EhCache的`CacheManager`。 4. **实体类和DAO层的缓存配置**:在Hibernate的实体类上,可以使用`@Cacheable`、`@CacheEvict`...

    spirng3注解(annotation)与ehcache的对象、页面缓存

    Spring3注解与Ehcache整合是现代Java应用中实现高效缓存管理的重要技术组合。在Spring框架中,注解提供了简洁的编程模型,而Ehcache则是一个广泛使用的开源缓存解决方案,它能有效提高应用程序性能,减少数据库访问...

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

    本文将深入探讨如何结合Spring AOP与EhCache实现一个简单的缓存实例,以便优化Java应用的运行效率。 首先,让我们了解Spring AOP。Spring AOP是Spring框架的一部分,它允许我们在不修改业务代码的情况下,通过定义...

    spring小结之配置二级缓存!

    4. 在实体类和Service层注解:使用`@Cacheable`、`@CacheEvict`等注解,指定哪些方法的返回结果应被缓存,以及何时清除缓存。例如: ```java @Service public class UserService { @Cacheable(value = "myCache", ...

    hibernate annotation 中文文档

    - **2.4.7 缓存**:`@Cache` 注解用于配置实体Bean的缓存策略。 - **2.4.8 过滤器**:`@Filter` 注解用于实现对查询结果的动态过滤。 - **2.4.9 查询**:`@NamedQuery` 注解用于定义命名查询。 #### 四、通过 XML ...

    struts1.3+spring2.5+hibernate3.3 组合开发 annotation实现

    在本项目中,这些框架的集成使用了注解(Annotation)来简化配置,使得代码更加简洁和易于维护。 Struts1.3 是一个基于 Model-View-Controller (MVC) 模式的开源框架,用于构建动态 Web 应用。它提供了一种结构化的...

    Ehcache缓存技术说明

    首先,需要在Hibernate的配置文件中启用二级缓存并指定Ehcache为提供者,然后在实体类或映射文件中启用缓存。 ```xml &lt;!-- hibernate.cfg.xml --&gt; &lt;property name="hibernate.cache.use_second_level_cache"&gt;true ...

    Ehcache整合Spring使用页面、对象缓存

    Ehcache是一个流行的Java缓存库,常用于提高应用程序的性能和效率,通过存储经常访问的数据来减少数据库的负载。...同时,通过Spring的缓存抽象,可以方便地切换不同缓存实现,保持代码的可维护性和可扩展性。

    spring_hibernate_annotation的三种实现

    以下将详细介绍"spring_hibernate_annotation的三种实现"。 1. **基于XML的配置** 在早期的Spring和Hibernate集成中,通常使用XML配置文件来定义Bean和数据源,以及映射信息。Spring的`applicationContext.xml`...

    基于annotation s2sh实现零配置的教务管理系统改进版

    在本项目中,我们采用“基于annotation的S2SH(Struts2、Spring、Hibernate)实现零配置的教务管理系统改进版”,这表明了系统设计的核心在于利用Java框架的注解能力来减少传统XML配置文件的使用,从而提高开发效率...

    Hibernate Annotation 学习笔记

    1. 隐式映射:在上面的例子中,我们没有显式指定每个属性的映射,这是因为Hibernate Annotation采用了一种“配置例外”(configuration by exception)的理念。除主键和实体标识外,其他属性默认按照Java Bean的规则...

    Bean Validation 技术规范特性概述

    - **约束注解(Constraint Annotation)**:Bean Validation 提供了一系列内置的约束注解,如`@NotNull`、`@Min`、`@Max`等,用于标记在实体类上的字段,定义验证规则。 - **验证器(Validator)**:验证器负责执行...

    SpringBoot整合Redis

    创建一个配置类,设置RedisTemplate并指定KeyGenerator和CacheManager: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import ...

    Spring实战之类级别缓存实现与使用方法

    总结起来,Spring的类级别缓存提供了一种方便的方式来管理和使用缓存,通过注解驱动和EhCache这样的缓存提供商,我们可以轻松地在服务层实现缓存功能,减少不必要的计算和数据库查询,提高系统响应速度。理解并熟练...

    基于spring 方法级缓存的多种实现

    最后,通过`&lt;cache:annotation-driven&gt;`启用基于注解的缓存处理,指定使用哪个缓存管理器。 ```xml &lt;bean id="ehcacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"&gt; &lt;/...

    使用maven简单搭建Spring mvc + redis缓存

    在IT行业中,构建一个高效的Web应用常常涉及到各种技术的整合,比如Spring MVC作为控制器层的框架,Redis作为高性能的键值存储系统用于缓存。本文将详细讲解如何使用Maven来简单搭建一个集成了Spring MVC和Redis缓存...

    hibernate_annotation_中文帮助文档

    - **EJB3注解**:实体Bean是ORM的核心,EJB3注解提供了在Java类上直接声明数据库映射的方法。 - **表定义**:使用`@Table`注解指定对应的数据库表。 - **乐观锁定**:通过`@Version`注解实现乐观锁,防止并发更新...

    hibernate annotation帮助文档

    ### Hibernate Annotation 帮助文档知识点总结 #### 1. 创建注解项目 - **系统需求**:在开始创建一个支持 Hibernate 注解的项目之前,需要确保满足以下系统需求: - Java 开发环境(例如 JDK 1.8 或更高版本)。...

    Spring实战之缓存使用condition操作示例

    在Spring配置文件中,我们需要使用&lt;cache:annotation-driven&gt;元素来启用缓存机制,并使用元素来指定缓存管理器。在本文中,我们使用EhCache作为缓存提供者,因此我们需要使用&lt;bean&gt;元素来配置EhCache的CacheManager...

Global site tag (gtag.js) - Google Analytics