Spring的第四天AOP之註解版
阿新 • • 發佈:2018-11-03
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