`

Annotation实现缓存,Bean创建代理模式

 
阅读更多
这是BeanPostProcessor,生成一个代理对象
package org.frame.base.annotation.support;

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

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{

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

	@Override
	public Object postProcessBeforeInitialization(Object target, String beanName)
			throws BeansException {
		Class<?>[] interfaceClass = target.getClass().getInterfaces();
		InvocationHandler handler = new ProxyHandler(target);
		Object proxyObj = Proxy.newProxyInstance(target.getClass().getClassLoader(),
				interfaceClass, handler);
		return proxyObj;
	}

}


配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
	<!-- annotation intercept-->
	<!-- 
	<bean id="testIano"
		class="org.frame.base.annotation.support.EhCacheFactoryBean" init-method="init"> 
		<property name="target">
			<ref bean = "testI"/>
		</property> 
	</bean>
	 -->
	
	<!-- 原始结构 -->
	<bean id="testI" class ="org.frame.base.annotation.intercept.Test"/>
	
	<!-- Ehcache拦截,使用代理来实现 -->
	<bean id="beanPostProcessor" class="org.frame.base.annotation.support.EhCacheBeanPostProcessor" />
	
</beans>

测试代码如下:
	TestI testI = (TestI) cxt.getBean("testI");
		int a = 10;
		int b = 11;
		System.out.println(testI.add(a, b));
		System.out.println(testI.add(a, b));
		System.out.println(testI.xx(a));
		System.out.println(testI.xx(a));

具体的注解代码,请查看上一节。
分享到:
评论

相关推荐

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

    Spring通过代理模式实现了AOP,可以自动在目标方法调用前后执行特定的逻辑,这为我们实现方法级别的缓存提供了可能。 1. **配置Ehcache** 在开始之前,确保已在项目中引入Ehcache的依赖。然后,需要配置Ehcache,...

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

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

    hibernate annotation 中文文档

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

    spring二级缓存

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

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

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

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

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

    动态代理的方式注册到spring容器

    在Spring框架中,动态代理是一种常见且强大的技术,它允许我们在运行时创建对象的代理,以便在调用方法时添加额外的功能,如日志、事务管理、缓存等。本篇将深入探讨如何通过动态代理将对象注册到Spring容器,并实现...

    spring_hibernate_annotation的三种实现

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

    详解使用Spring的BeanPostProcessor优雅的实现工厂模式

    在`postProcessBeforeInitialization`方法中,我们可以对bean进行预处理,如缓存bean实例;在`postProcessAfterInitialization`方法中,可以进行进一步的初始化后处理。 ```java @Service public class ...

    Bean Validation 技术规范特性概述

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

    Hibernate Annotation 学习笔记

    通过不断改进实例并实践,我们可以更好地理解和掌握Hibernate Annotation的精髓,实现更高效、更便捷的Java持久化编程。在后续的学习笔记中,我们将继续探索更多关于Hibernate Annotation的实用技巧和高级特性。

    SpringMVC Spring Hibernate 框架整合 Annotation Maven Project

    在DAO接口上使用@Repository,利用Spring的代理机制实现事务控制。 通过这样的整合,开发者可以利用SpringMVC处理HTTP请求,Spring管理业务逻辑和服务,Hibernate处理数据库操作,形成一个完整的Web应用架构。这样...

    spring小结之配置二级缓存!

    2. 配置EhCache:创建一个名为`ehcache.xml`的配置文件,定义缓存策略,如缓存大小、过期时间、是否持久化等。例如: ```xml timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" ...

    Ehcache缓存技术说明

    首先,在Spring配置文件中配置Ehcache管理器,然后在需要使用缓存的bean上使用`@Cacheable`注解。 ```xml &lt;bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"&gt; &lt;/...

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

    2. 配置Ehcache:创建一个`ehcache.xml`配置文件,定义缓存策略,包括缓存的名称、大小、过期策略等。 ```xml ``` 3. 配置Spring:在Spring的配置文件中启用缓存支持,并指定Ehcache为缓存管理器。 ```xml ...

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

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

    hibernate_annotation_中文帮助文档

    《Hibernate Annotations中文帮助文档》是针对Java开发人员的一份详细指南,主要讲解如何使用Hibernate ORM框架中的注解来实现数据库对象的映射。该文档涵盖了从基础到高级的各种概念,帮助开发者更高效地管理和操作...

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

    在Spring框架中,方法级缓存是一种强大的特性,它允许开发者在特定的方法执行结果上实现缓存,从而提高应用程序的性能。这种方法级缓存的实现可以基于不同的缓存系统,如Ehcache、Spring自带的缓存支持,以及Redis。...

    hibernate annotation帮助文档

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

    SpringBoot整合Redis

    下面我们将详细介绍如何在SpringBoot项目中整合Redis,并利用注解实现缓存功能。 ### 1. 添加依赖 首先,我们需要在SpringBoot项目的`pom.xml`文件中添加Spring Data Redis和Spring Cache的依赖: ```xml ...

Global site tag (gtag.js) - Google Analytics