您好,登錄后才能下訂單哦!
aop 是spring的核心之一,在springboot之前,使用AOP已經相對比較多了,主要在開發(fā)中用于實現日志記錄,安全校驗,權限等功能。
在springboot把Spring的核心功能都簡化使用之后,aop的配置并沒有太大的變化,基本還是原來的使用。
我們做系統增強,分為前增強,后增強,環(huán)繞增強 三種基本類型,當然我看還有一些實現了return 增強之類的,本質上都一樣的。
Springboot通過@Aspect注解來實現aop 的功能。我們在使用的時候,需要在類上面聲明好這個注解。
同時,也要定義切點,切面這些功能。
比如 ,通過@Pointcut來定義切點
@Pointcut("execution(public * com.example.demo.controller.*.*(..))")
public void webLog(){
}
指定com.example.demo.controller包下面的所有方法都要被增強。
@Before("webLog()")
public void doBeforeAdvice(JoinPoint joinPoint){
System.out.println("我是前置通知!!!");
//獲取目標方法的參數信息
Object[] obj = joinPoint.getArgs();
//AOP代理類的信息
}
@After("webLog()")
public void doAfterAdvice(JoinPoint joinPoint){
System.out.println("后置通知執(zhí)行了!!!!");
}
@Around("execution(* com.zkn.learnspringboot.web.controller..*.testAround*(..))")
public Object doAroundAdvice(ProceedingJoinPoint proceedingJoinPoint){
System.out.println("環(huán)繞通知的目標方法名:"+proceedingJoinPoint.getSignature().getName());
try {//obj之前可以寫目標方法執(zhí)行前的邏輯
Object obj = proceedingJoinPoint.proceed();//調用執(zhí)行目標方法
return obj;
} catch (Throwable throwable) {
throwable.printStackTrace();
}
return null;
}
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。