使用spring AOP解決調用方法時前后添加日志信息


  接着上一篇的例子,這里是使用AspectJ--當前流行的AOP框架來解決問題。

  1,首先在項目中添加AOP相關的依賴jar包;

  2,創建spring 配置文件,且在創建的時候加入aop命名空間

  3,使用spring AOP基於注解的方式

   1)在配置文件中加入如下配置:

<!-- 使aspectJ注解起作用:自動為匹配的類生成代理對象 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

  2)把橫切關注點的代碼抽象到切面類中

         注意點:切面首先是一個IOC容器中的bean,即加入@component注解 ;切面需加入@Aspect注解

  3)在類中聲明各種通知:聲明一個方法,在方法前執行用@Before注解,在方法后執行用@After注解

  4)可以在通知方法中聲明一個類型為JoinPoint的參數,就能訪問連接點的細節,如方法的名稱和參數等。

具體代碼如圖:

@Aspect//聲明類為一個切面,需要先把類放到一個IOC容器中
@Component
public aspect LoggingAspect {
    //該方法是一個前置通知:在目標方法執行之前執行
    @Before(value="execution(int com.test.spring.aop.Calc.*(int, int))")
    public void beforeMethod(JoinPoint joinPoint){
        String methodName=joinPoint.getSignature().getName();
        System.out.println("the method "+methodName+" begin with "+Arrays.asList(joinPoint.getArgs()));
    }
    //該方法是一個后置通知:在目標方法執行之后執行(無論是否發生異常)
    @After(value="execution(int com.test.spring.aop.Calc.*(int, int))")
    public void afterMethod(JoinPoint joinPoint){
        String methodName=joinPoint.getSignature().getName();
        System.out.println("the method "+methodName+" end");
    }
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM