日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring AOP(面向切面) 注解使用方法

發(fā)布時間:2023/12/18 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring AOP(面向切面) 注解使用方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 開啟自動織入支持
    • 在XML中開啟
    • 通過注解開啟
      • 注解方式入口類
      • 注解方式定義切面類
        • Spring的注解的AOP的通知類型
          • 環(huán)繞通知@Around
          • @Before:前置通知
          • @AfterReturning:后置通知
          • @AfterThrowing:異常拋出通知
          • @After:最終通知
      • 通過@Pointcut注解定義切入點表達式

開啟自動織入支持

在XML中開啟

添aop標(biāo)簽

<aop:aspectj-autoproxy />

開啟注解支持,同時強制指定代理機制為cglib

<aop:aspectj-autoproxy proxy-target-class="true" />

通過注解開啟

@Configuration
// 開啟注解支持,同時強制指定代理機制為cglib
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class MyAOPConf {}
@Component
@Aspect //表示這是一個切面類,里面的方法都是像打印日志等圍繞業(yè)務(wù)方法的方法

注解方式入口類

@Configuration //相當(dāng)生成一個XML文件 @ComponentScan(basePackages = "com.lanou3g.spring.simple.say")//掃描路徑 @EnableAspectJAutoProxy //開啟對AOP相關(guān)注解的處理 public class AppByAnnotation { ... }

注解方式定義切面類

@Pointcut:切入點的注解
由于@Aspect注解沒有讓Spring作為組件bean掃描的能力,所以我們需要額外添加@Component注解

@Aspect // 表示該類是一個切面 @Component // Aspect切面首先必須也是一個普通的bean public class MethodInOutAspect { }

Spring的注解的AOP的通知類型

環(huán)繞通知@Around

指定該方法是一個環(huán)繞通知,通知注解的參數(shù)代表引用一個切入點表達式

@Around("com.lanou3g.spring.GlobalPointcut.say_all_method()")public Object aroundM(ProceedingJoinPoint joinPoint) throws Throwable {} // 獲取連接點方法的名稱String methodName = joinPoint.getSignature().getName();// 獲取連接點方法的參數(shù)Object[] args = joinPoint.getArgs();
@Before:前置通知
@Before("com.lanou3g.spring.GlobalPointcut.say_all_method()")
@AfterReturning:后置通知
@AfterReturning(pointcut = "com.lanou3g.spring.GlobalPointcut.say_all_method()", returning = "ret")
@AfterThrowing:異常拋出通知
@AfterThrowing(value="execution(* "com.lanou3g.spring.GlobalPointcut.say_all_method()" , throwing="e")
@After:最終通知
@After("com.lanou3g.spring.GlobalPointcut.say_all_method()")
方法名功能
Signature getSignature();獲取封裝了署名信息的對象,在該對象中可以獲取到目標(biāo)方法名,所屬類的Class等信息
Object[] getArgs();獲取傳入目標(biāo)方法的參數(shù)對象
Object getTarget();獲取被代理的對象
Object getThis();獲取代理對象
Object proceed() throws Throwable執(zhí)行目標(biāo)方法
Object proceed(Object[] var1) throws Throwable傳入的新的參數(shù)去執(zhí)行目標(biāo)方法

通過@Pointcut注解定義切入點表達式

攔截com.lanou3g.spring.simple.say包下所有類(包括子包中所有類)中的所有方法
@Pointcut(“execution(* com.lanou3g.spring.simple.say….(…))”)
public void say_all_method() {}

總結(jié)

以上是生活随笔為你收集整理的Spring AOP(面向切面) 注解使用方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。