spring的AOP配置

Advisor(通知器),当我们完成对目标方法的切面增强设计(advice)和关注点的设计(pointcut)以后,需要一个对象把它们结合起来,完成这个作用的就是Advisor。通过Advisor可以定义应该使用哪个advice并且在哪个pointcut使用它。NameMatchMethodPointcutAdvisor是细化后的DefaultPointcutAdvisor,它限定了自身可以使用的Pointcut类型为NameMatchMethodPointcut,并且外部不可更改。其两个属性名分别为advicemappedName

ProxyFactoryBean是在Spring IoC环境中,创建AOP应用的最底层方法,也是最灵活的方法,spring通过它完成了对AOP使用的封装。在基于XML配置SpringBean的时候,往往需要一系列的配置步骤来使用ProxyFactoryBeanAOP,比如以下步骤:

1) 定义使用的通知器Advisor,这个通知器应该作为一个Bean来定义。

<bean id="methodBeforeAdviceImpl" class="example.MethodBeforeAdviceImpl"/><!-- 拦截器对象 -->

<bean id="theAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor"><!-- 配置通知器,用的是Spring组件 -->

<property name="advice">

<ref local="methodBeforeAdviceImpl"/><!-- 拦截器对象 -->

</property>

<property name="mappedName" value="*"></property><!-- 拦截所有的方法 -->

</bean>

2)  定义ProxyFactoryBean,把它作为另一个Bean来定义,它是封装AOP功能的主要类。在配置ProxyFactoryBean时,需要设定与AOP实现相关的重要属性,如interceptorNamestarget等。InterceptorNames属性的值往往设置为需要定义的通知器,因为这些通知器在ProxyFactoryBeanAOP配置下,是通过使用代理对象的拦截器机制起作用的,所以依然沿用拦截器这个名字。

3)  定义target属性,作为target属性注入的Bean,是需要用AOP通知器中的切面应用来增强的对象。ProxyFactoryBean需要为目标对象生成代理对象。

<bean id="service" class="org.springframework.aop.framework.ProxyFactoryBean"><!-- 代理类Spring的组件 -->

<property name="interceptorNames" value="theAdvisor"></property>

<property name="target" >

<ref local="serviceImpl"/><!—目标对象-->

</property>

</bean>

spring用代理类包裹切面,把他们织入到Spring管理的bean中。也就是说代理类伪装成目标类,它会截取对目标类中方法的调用,让调用者对目标类的调用都先变成调用伪装类,伪装类中就先执行了切面,再把调用转发给真正的目标bean。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值