基于Annotation的Spring AOP: @AfterReturning

基于Annotation的Spring AOP: @AfterReturning

2013年08月03日 06:20:37

阅读数:7916

AfterReturning 增强处理将在目标方法正常完成后被织入。

使用@AfterReturning可指定如下两个属性:

① pointcut / value : 两者都用于指定该切入点对应的切入表达式

returning : 指定一个返回值形参名,增强处理定义的方法可通过该行参名来访问目标方法的返回值。

Person.java :

 

 
  1. public interface Person {

  2. public String sayHello(String name);

  3. public void eat(String food);

  4. }

Chinese.java :

 

 

 
  1. import org.springframework.stereotype.Component;

  2.  
  3. @Component

  4. public class Chinese implements Person {

  5.  
  6. @Override

  7. public void eat(String food) {

  8. System.out.println("我正在吃:"+food);

  9. }

  10.  
  11. @Override

  12. public String sayHello(String name) {

  13. System.out.println("sayHello方法被执行了");

  14. return name+"Hello,Spring AOP";

  15. }

  16.  
  17. }

AfterReturningAdviceTest.java :

 

 

 
  1. import org.aspectj.lang.annotation.AfterReturning;

  2. import org.aspectj.lang.annotation.Aspect;

  3.  
  4. /**

  5. * 定义一个切面

  6. * @author Administrator

  7. *

  8. */

  9. @Aspect

  10. public class AfterReturningAdviceTest {

  11.  
  12. @AfterReturning(returning="rvt",pointcut="execution(* com.bean.*.*(..))")

  13. public void log(Object rvt){

  14. System.out.println("获取目标方法返回值:"+rvt);

  15. System.out.println("模拟记录日志的功能...");

  16. }

  17.  
  18. }

bean.xml :

 

 

 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <beans xmlns="http://www.springframework.org/schema/beans"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4. xmlns:context="http://www.springframework.org/schema/context"

  5. xmlns:aop="http://www.springframework.org/schema/aop"

  6. xmlns:tx="http://www.springframework.org/schema/tx"

  7. xsi:schemaLocation="http://www.springframework.org/schema/beans

  8. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

  9. http://www.springframework.org/schema/context

  10. http://www.springframework.org/schema/context/spring-context-2.5.xsd

  11. http://www.springframework.org/schema/tx

  12. http://www.springframework.org/schema/tx/spring-tx-2.5.xsd

  13. http://www.springframework.org/schema/aop

  14. http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

  15.  
  16.  
  17. <context:component-scan base-package="com.bean">

  18. <context:include-filter type="annotation"

  19. expression="org.aspectj.lang.annotation.Aspect"/>

  20. </context:component-scan>

  21.  
  22. <aop:aspectj-autoproxy/>

  23.  
  24. </beans>

Test.java :

 

 

 
  1. public class Test {

  2. public static void main(String[] args) {

  3.  
  4. ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");

  5. Person p=(Person) ctx.getBean("chinese");

  6. System.out.println(p.sayHello("张三"));

  7. p.eat("西瓜");

  8. }

  9. }

运行控制台输出:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值