这是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通过代理模式实现了AOP,可以自动在目标方法调用前后执行特定的逻辑,这为我们实现方法级别的缓存提供了可能。 1. **配置Ehcache** 在开始之前,确保已在项目中引入Ehcache的依赖。然后,需要配置Ehcache,...
本文将深入探讨如何结合Spring AOP与EhCache实现一个简单的缓存实例,以便优化Java应用的运行效率。 首先,让我们了解Spring AOP。Spring AOP是Spring框架的一部分,它允许我们在不修改业务代码的情况下,通过定义...
- **2.4.7 缓存**:`@Cache` 注解用于配置实体Bean的缓存策略。 - **2.4.8 过滤器**:`@Filter` 注解用于实现对查询结果的动态过滤。 - **2.4.9 查询**:`@NamedQuery` 注解用于定义命名查询。 #### 四、通过 XML ...
使用`<cache:annotation-driven/>`元素开启基于注解的缓存控制,并通过`<bean>`标签配置EhCache的`CacheManager`。 4. **实体类和DAO层的缓存配置**:在Hibernate的实体类上,可以使用`@Cacheable`、`@CacheEvict`...
Spring3注解与Ehcache整合是现代Java应用中实现高效缓存管理的重要技术组合。在Spring框架中,注解提供了简洁的编程模型,而Ehcache则是一个广泛使用的开源缓存解决方案,它能有效提高应用程序性能,减少数据库访问...
在本项目中,这些框架的集成使用了注解(Annotation)来简化配置,使得代码更加简洁和易于维护。 Struts1.3 是一个基于 Model-View-Controller (MVC) 模式的开源框架,用于构建动态 Web 应用。它提供了一种结构化的...
在Spring框架中,动态代理是一种常见且强大的技术,它允许我们在运行时创建对象的代理,以便在调用方法时添加额外的功能,如日志、事务管理、缓存等。本篇将深入探讨如何通过动态代理将对象注册到Spring容器,并实现...
以下将详细介绍"spring_hibernate_annotation的三种实现"。 1. **基于XML的配置** 在早期的Spring和Hibernate集成中,通常使用XML配置文件来定义Bean和数据源,以及映射信息。Spring的`applicationContext.xml`...
在`postProcessBeforeInitialization`方法中,我们可以对bean进行预处理,如缓存bean实例;在`postProcessAfterInitialization`方法中,可以进行进一步的初始化后处理。 ```java @Service public class ...
- **约束注解(Constraint Annotation)**:Bean Validation 提供了一系列内置的约束注解,如`@NotNull`、`@Min`、`@Max`等,用于标记在实体类上的字段,定义验证规则。 - **验证器(Validator)**:验证器负责执行...
通过不断改进实例并实践,我们可以更好地理解和掌握Hibernate Annotation的精髓,实现更高效、更便捷的Java持久化编程。在后续的学习笔记中,我们将继续探索更多关于Hibernate Annotation的实用技巧和高级特性。
在DAO接口上使用@Repository,利用Spring的代理机制实现事务控制。 通过这样的整合,开发者可以利用SpringMVC处理HTTP请求,Spring管理业务逻辑和服务,Hibernate处理数据库操作,形成一个完整的Web应用架构。这样...
2. 配置EhCache:创建一个名为`ehcache.xml`的配置文件,定义缓存策略,如缓存大小、过期时间、是否持久化等。例如: ```xml timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" ...
首先,在Spring配置文件中配置Ehcache管理器,然后在需要使用缓存的bean上使用`@Cacheable`注解。 ```xml <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> </...
2. 配置Ehcache:创建一个`ehcache.xml`配置文件,定义缓存策略,包括缓存的名称、大小、过期策略等。 ```xml ``` 3. 配置Spring:在Spring的配置文件中启用缓存支持,并指定Ehcache为缓存管理器。 ```xml ...
在本项目中,我们采用“基于annotation的S2SH(Struts2、Spring、Hibernate)实现零配置的教务管理系统改进版”,这表明了系统设计的核心在于利用Java框架的注解能力来减少传统XML配置文件的使用,从而提高开发效率...
《Hibernate Annotations中文帮助文档》是针对Java开发人员的一份详细指南,主要讲解如何使用Hibernate ORM框架中的注解来实现数据库对象的映射。该文档涵盖了从基础到高级的各种概念,帮助开发者更高效地管理和操作...
在Spring框架中,方法级缓存是一种强大的特性,它允许开发者在特定的方法执行结果上实现缓存,从而提高应用程序的性能。这种方法级缓存的实现可以基于不同的缓存系统,如Ehcache、Spring自带的缓存支持,以及Redis。...
### Hibernate Annotation 帮助文档知识点总结 #### 1. 创建注解项目 - **系统需求**:在开始创建一个支持 Hibernate 注解的项目之前,需要确保满足以下系统需求: - Java 开发环境(例如 JDK 1.8 或更高版本)。...
下面我们将详细介绍如何在SpringBoot项目中整合Redis,并利用注解实现缓存功能。 ### 1. 添加依赖 首先,我们需要在SpringBoot项目的`pom.xml`文件中添加Spring Data Redis和Spring Cache的依赖: ```xml ...