SpringAOP直接自己实现Advice

本文深入解析了Spring AOP中Advisor的概念及其应用,通过配置示例详细介绍了如何使用Advisor实现前置通知和后置返回通知,并探讨了Advisor与transaction advice的结合使用,提供了具体的XML配置代码。

"advisor"这个概念来自Spring1.2对AOP的支持,而在AspectJ中没有等价的概念。Advisor表示只有一个通知一个切入点的切面,Advisor可以使用<aop:config>标签下的<aop:advisor>标签定义,下面配置一个前置通知的Advisor:

1 <aop:config>
2     <aop:pointcut id="pointcut" expression="execution (* com.sohu.tv.crm.service.*.*(..))"/>
3     <aop:advisor advice-ref="beforeAdvice" pointcut-ref="pointcut" />
4 </aop:config>
5 <bean id="beforeAdvice" class="com.sohu.tv.crm.aop.BeforeAdviceImpl"/>
BeforeAdviceImpl类实现MethodBeforeAdvice接口:


1 public class BeforeAdviceImpl implements MethodBeforeAdvice {
2     private static final Logger LOGGER = LoggerFactory.getLogger(BeforeAdviceImpl.class);
3  
4     @Override
5     public void before(Method method, Object[] args, Object target) throws Throwable {
6         LOGGER.info("method name:" + method.getName());
7         LOGGER.info("arguments:" + args);
8     }
9 }
这样就实现了前置通知,其他的还包括后置返回通知接口AfterReturningAdvice :
1 public class AfterReturningAdviceImpl implements AfterReturningAdvice {
2     private static final Logger LOGGER = LoggerFactory.getLogger(AfterReturningAdviceImpl.class);
3  
4     @Override
5     public void afterReturning(Object result, Method method, Object[] args, Object target) throws Throwable {
6         LOGGER.info("result:" + result);
7     }
8 }


Advisor大部分情况下和transaction advice一起使用,如下:


01 <aop:config>
02   <aop:pointcut id="businessService"
03         expression="execution(* com.xyz.myapp.service.*.*(..))"/>
04  
05   <aop:advisor
06       pointcut-ref="businessService"
07       advice-ref="tx-advice"/>
08        
09 </aop:config>
10  
11 <tx:advice id="tx-advice">
12   <tx:attributes>
13     <tx:method name="*" propagation="REQUIRED"/>
14   </tx:attributes>
15 </tx:advice>

http://my.oschina.net/mushui/blog/161273
此人博客中有关于AOP相关的知识,本文也来源于此
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值