1. 程式人生 > >Spring的第四天AOP之註解版

Spring的第四天AOP之註解版

Spring的第四天AOP之註解版

ssm框架  spring 

在上一篇部落格中,介紹了Spring的AOP的xml版本的使用,在這篇部落格中,我將介紹一下,註解版的使用。

常用註解

註解 通知
@After 通知方法會在目標方法返回或丟擲異常後呼叫
@AfterRetruening 通常方法會在目標方法返回後呼叫
@AfterThrowing 通知方法會在目標方法丟擲異常後呼叫
@Around 通知方法將目標方法封裝起來
@Before 通知方法會在目標方法執行之前執行

xml檔案配置

<!-- 宣告啟用自動掃描元件功能,spring會去自動掃描com.weno下面或則自包下面的java檔案,如果掃描到了@Component,@Controller等這些註解的類,就會把他們註冊為bean,名字為類名但是首字母小寫 -->
<context:component-scan base-package="com.weno.*"/> <!-- Spring預設不支援使用@AspectJ的切面宣告 使用如下配置可以使Spring發現那些配置@AspectJ的bean,並且建立代理,織入切面 --> <aop:aspectj-autoproxy/>

通知類

//宣告這是一個元件,使其能夠被掃描到
@Component
//宣告這是一個切面Bean
@Aspect
public class Advices {

    //減少重複性工作
@Pointcut(value = "execution(* com.weno.pojo.User.msg())") public void msg(){ } @Before(value = "msg()") public void beforeMethod(){ System.out.println("我正在切前置"); } @AfterReturning(returning = "rvt",value = "msg()") public void returnMethod(String rvt){ System.out.println("我正在切返回值"+rvt); } @After( value = "msg()") public void afterMethod(){ System.out.println("我正在切後置"); } @AfterThrowing(value = "execution(* com.weno.pojo.User.msg2())") public void errorMethod(){ System.out.println("我正在切錯誤"); } }

被切的類

import org.springframework.stereotype.Component;

@Component
public class User {

    public String msg(){
        System.out.println("我叫msg");

        return "你是誰?";
    }
    public void msg2(){
        System.out.println("被錯誤通知切");
        throw new RuntimeException("我故意的錯");
    }
}

啊啊啊啊!恭喜IG