當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
Spring AOP(面向切面) 注解使用方法
生活随笔
收集整理的這篇文章主要介紹了
Spring AOP(面向切面) 注解使用方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 開(kāi)啟自動(dòng)織入支持
- 在XML中開(kāi)啟
- 通過(guò)注解開(kāi)啟
- 注解方式入口類(lèi)
- 注解方式定義切面類(lèi)
- Spring的注解的AOP的通知類(lèi)型
- 環(huán)繞通知@Around
- @Before:前置通知
- @AfterReturning:后置通知
- @AfterThrowing:異常拋出通知
- @After:最終通知
- 通過(guò)@Pointcut注解定義切入點(diǎn)表達(dá)式
開(kāi)啟自動(dòng)織入支持
在XML中開(kāi)啟
添aop標(biāo)簽
<aop:aspectj-autoproxy />開(kāi)啟注解支持,同時(shí)強(qiáng)制指定代理機(jī)制為cglib
<aop:aspectj-autoproxy proxy-target-class="true" />通過(guò)注解開(kāi)啟
@Configuration
// 開(kāi)啟注解支持,同時(shí)強(qiáng)制指定代理機(jī)制為cglib
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class MyAOPConf {}
@Component
@Aspect //表示這是一個(gè)切面類(lèi),里面的方法都是像打印日志等圍繞業(yè)務(wù)方法的方法
注解方式入口類(lèi)
@Configuration //相當(dāng)生成一個(gè)XML文件 @ComponentScan(basePackages = "com.lanou3g.spring.simple.say")//掃描路徑 @EnableAspectJAutoProxy //開(kāi)啟對(duì)AOP相關(guān)注解的處理 public class AppByAnnotation { ... }注解方式定義切面類(lèi)
@Pointcut:切入點(diǎn)的注解
由于@Aspect注解沒(méi)有讓Spring作為組件bean掃描的能力,所以我們需要額外添加@Component注解
Spring的注解的AOP的通知類(lèi)型
環(huán)繞通知@Around
指定該方法是一個(gè)環(huán)繞通知,通知注解的參數(shù)代表引用一個(gè)切入點(diǎn)表達(dá)式
@Around("com.lanou3g.spring.GlobalPointcut.say_all_method()")public Object aroundM(ProceedingJoinPoint joinPoint) throws Throwable {} // 獲取連接點(diǎn)方法的名稱(chēng)String methodName = joinPoint.getSignature().getName();// 獲取連接點(diǎn)方法的參數(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(); | 獲取封裝了署名信息的對(duì)象,在該對(duì)象中可以獲取到目標(biāo)方法名,所屬類(lèi)的Class等信息 |
| Object[] getArgs(); | 獲取傳入目標(biāo)方法的參數(shù)對(duì)象 |
| Object getTarget(); | 獲取被代理的對(duì)象 |
| Object getThis(); | 獲取代理對(duì)象 |
| Object proceed() throws Throwable | 執(zhí)行目標(biāo)方法 |
| Object proceed(Object[] var1) throws Throwable | 傳入的新的參數(shù)去執(zhí)行目標(biāo)方法 |
通過(guò)@Pointcut注解定義切入點(diǎn)表達(dá)式
攔截com.lanou3g.spring.simple.say包下所有類(lèi)(包括子包中所有類(lèi))中的所有方法
@Pointcut(“execution(* com.lanou3g.spring.simple.say….(…))”)
public void say_all_method() {}
總結(jié)
以上是生活随笔為你收集整理的Spring AOP(面向切面) 注解使用方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 长尾效应--Long Tail Effe
- 下一篇: SpringMVC添加登录页面以及首页实