`
favor
  • 浏览: 144060 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring ProxyFactoryBean简单使用

阅读更多
使用Spring的ProxyFactoryBean来拦截方法
先编写一个类这个类要implements MethodBeforeAdvice在这里我定义了一个MinstrelAdvice类implements MethodBeforeAdvice
MethodBeforeAdvice位置是org.springframework.aop.MethodBeforeAdvice
public class MinstrelAdvice implements MethodBeforeAdvice {

	public void before(Method method, Object[] obj, Object target)
			throws Throwable {
		Knight knight = (Knight) target;
		Logger song = Logger.getLogger(target.getClass());
		System.out.println("MinstrelAdvice running.........");
		song.debug("Brave " + knight.getName() + " did " + method.getName());
	}

}

然后配置applicationContext.xml文件
<bean id="quest" class="com.springinaction.chapter01.knight.HolyGrailQuest"></bean>
	
	<bean id="knightTarget" class="com.springinaction.chapter01.knight.KnightOfTheRoundTable">
		<constructor-arg>
			<value>Bedivere</value>
		</constructor-arg>
		<property name="quest">
			<ref bean="quest"/>
		</property>
	</bean>
	
	<bean id="new" class="com.springinaction.chapter01.knight.New"></bean>
	
	<bean id="minstrel" class="com.springinaction.chapter01.knight.MinstrelAdvice">
	</bean>
	
	<bean id="knight" class="org.springframework.aop.framework.ProxyFactoryBean">
		<property name="proxyInterfaces">
			<list><!-- 拦截Knight的方法   是一个接口类 -->
				<value>com.springinaction.chapter01.knight.Knight</value>
			</list>
		</property>
		
		<property name="interceptorNames">
			<list>
				<value>minstrel</value><!-- 先让minstrel处理请求 -->
			</list>
		</property>
		
		<property name="target">
			<ref bean="knightTarget"/> <!-- 再让knightTarget处理 -->
		</property>
</bean>

使用ProxyFactoryBean来拦截Knight子类中的方法,定义interceptorNames属性让minstrel先处理请求,再定义target属性让knightTarget处理,这样我们就可以在使用Knight接口的子类时做一些提前的外理了,比如获得日志类Logger和不拦截的状态下所调用的方法.
分享到:
评论

相关推荐

    SpringBootAopInterceptor:Spring Boot ProxyFactoryBean

    在本讨论中,我们将深入探讨Spring AOP如何与`ProxyFactoryBean`结合使用,以及它在Spring Boot中的具体实现。 **Spring AOP基本概念** AOP是一种编程范式,旨在将关注点分离,使代码更具模块化和可维护性。在...

    Spring下使用策略模式

    对于源码分析,Spring的`org.springframework.beans.factory.config.MethodInvokingFactoryBean`和`org.springframework.aop.framework.ProxyFactoryBean`是策略模式的典型应用。前者用于在初始化时调用目标对象的...

    Spring-Reference_zh_CN(Spring中文参考手册)

    7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. 使用...

    spring 源码中文注释

    在数据访问层,Spring支持JDBC、ORM(Hibernate、MyBatis等)框架的集成,使得数据库操作变得简单。在Web MVC模块中,`DispatcherServlet`作为核心组件,负责请求的分发,`ModelAndView`和`HandlerMapping`等类则...

    官方原版源码 spring-5.2.8.RELEASE.zip

    而`org.springframework.aop.framework.ProxyFactoryBean`则实现了AOP代理,通过动态代理机制,使得可以在不修改原始代码的情况下,添加新的行为。 此外,Spring的事务管理(`org.springframework.transaction`包)...

    Spring 2.0 开发参考手册

    7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. ...

    spring1.2中文版API

    Spring API中文版的提供,使得开发者能够更方便地理解和使用这个强大的框架。 首先,Spring的核心特性包括依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)。依赖注入允许...

    Spring in Action(第二版 中文高清版).part2

    4.2.3 使用ProxyFactoryBean 4.3 自动代理 4.3.1 为Spring切面创建自动代理 4.3.2 自动代理@AspectJ切面 4.4 定义纯粹的POJO切面 4.5 注入AspectJ切面 4.6 小结 第二部分 企业Spring 第5章 使用数据库 5.1...

    spring-framework-4.3.8 源码

    AOP的核心接口是`org.springframework.aop.framework.ProxyFactoryBean`,它用于创建代理对象。 三、MVC框架 Spring MVC是Spring提供的Web MVC框架,用于构建RESTful服务。在`org.springframework.web.servlet`包...

    Spring源代码解析

    Spring Web模块包含了MVC框架,使得开发RESTful服务变得简单。`DispatcherServlet`是Web MVC的入口,它负责请求分发;`Controller`接口和`@Controller`注解定义了处理请求的逻辑;`ModelAndView`对象封装了视图和...

    Spring中文帮助文档

    7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”通知器 7.6. 简化代理定义 7.7. 使用...

    Spring3.0.2-Source源码

    7. **测试支持**:Spring提供了对JUnit和其他测试框架的集成,使测试更简单。`org.springframework.test` 包提供了测试相关的API。 在Spring 3.0.2的源码中,我们可以看到上述模块的具体实现细节,如IoC容器的工作...

    spring jar包

    `org.springframework.aop`包下的ProxyFactoryBean和AspectJ相关类是其核心。 5. **spring-expression.jar**(Spring Expression Language - SpEL):用于在运行时查询和操作对象图的强大的表达式语言。`org.spring...

    Spring API doc

    `org.springframework.aop`和`org.springframework.context.support`包下的类和接口,如`Advisor`、`Pointcut`、`Aspect`和`ProxyFactoryBean`,是实现AOP的关键。 4. **Data Access/Integration**:Spring提供了对...

    spring chm文档

    7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. ...

    Spring API

    7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”通知器 7.6. 简化代理定义 7.7. 使用...

    spring-aop.jar

    以下是一个简单的Spring AOP使用示例: ```java @Aspect public class LoggingAspect { @Before("execution(* com.example.service.*.*(..))") public void logBefore(JoinPoint joinPoint) { // 日志记录代码 ...

    Spring之AOP配置文件详解

    这是一个简单的Bean定义,其类型为`com.mooza.spring.aop.SubInterface`,可能是一个实现了某个接口的具体实现类。 ```xml &lt;bean name="invocation" class="org.springframework.aop.framework.ProxyFactoryBean"&gt; ...

    Spring之AOP介绍

    - **使用ProxyFactoryBean创建AOP代理**:`ProxyFactoryBean`是Spring中的一个类,用于创建AOP代理。当定义了一个名为`myfactory`的`ProxyFactoryBean`时,引用`myfactory`的对象实际上获取的是`ProxyFactoryBean....

Global site tag (gtag.js) - Google Analytics