SpringAOP中的注解配置詳解
這篇文章主要介紹了SpringAOP中的注解配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
使用注解實(shí)現(xiàn)SpringAOP的功能:
例子:
//表示這是被注入Spring容器中的 @Component //表示這是個(gè)切面類 @Aspect public class AnnotationHandler { /* * 在一個(gè)方法上面加上注解來(lái)定義切入點(diǎn) * 這個(gè)切入點(diǎn)的名字就是這個(gè)方法的名字 * 這個(gè)方法本身不需要有什么作用 * 這個(gè)方法的意義就是:給這個(gè) @Pointcut注解一個(gè)可以書(shū)寫(xiě)的地方 * 因?yàn)樽⒔庵荒軐?xiě)在方法、屬性、類的上面,并且方法名作為切入點(diǎn)的名字 * */ //簡(jiǎn)單來(lái)說(shuō)就是將查到的方法用myPointCut()方法名代替 @Pointcut("execution(public * com.briup.aop.service..*.*(..))") public void myPointCut(){ } //注:這里面的所有方法的JoinPoint類型參數(shù)都可以去掉不寫(xiě),如果確實(shí)用不上的話 @Before("myPointCut()")//在myPointCut()中查到的方法之前切入 public void beforeTest(JoinPoint p){ System.out.println(p.getSignature().getName()+" before..."); } /* * @After和@AfterReturning * * @After標(biāo)注的方法會(huì)在切入點(diǎn)上的方法結(jié)束后被調(diào)用(不管是不是正常的結(jié)束). * @AfterReturning標(biāo)注的方法只會(huì)在切入點(diǎn)上的方法正常結(jié)束后才被調(diào)用. * */ @After("myPointCut()")//在myPointCut()中查到的方法之后切入 public void afterTest(JoinPoint p){ System.out.println(p.getSignature().getName()+" after..."); } @AfterReturning("myPointCut()") public void afterReturningTest(JoinPoint p){ System.out.println(p.getSignature().getName()+" afterReturning"); } @Around("myPointCut()")//在myPointCut()中查到的方法環(huán)繞切入 public Object aroundTest(ProceedingJoinPoint pjp)throws Throwable{ System.out.println(pjp.getSignature().getName()+" is start.."); //調(diào)用連接點(diǎn)的方法去執(zhí)行 Object obj = pjp.proceed(); System.out.println(pjp.getSignature().getName()+" is end.."); return obj; } //在切入點(diǎn)中的方法執(zhí)行期間拋出異常的時(shí)候,會(huì)調(diào)用這個(gè) @AfterThrowing注解所標(biāo)注的方法 @AfterThrowing(value="myPointCut()",throwing="ex") public void throwingTest(JoinPoint p,Exception ex){ System.out.println(p.getSignature().getName()+" is throwing..."+ex.getMessage()); } }
xml配置:注意給例子中使用的其他的類上面也使用注解
<aop:aspectj-autoproxy/> <context:component-scan base-package="com.briup.aop"/> <!-- 讓Spring掃描注解 --> <context:component-scan base-package="com.briup.aop"></context:component-scan> <!-- 識(shí)別AspectJ的注解 --> <aop:aspectj-autoproxy/>
注意:<aop:aspectj-autoproxy proxy-target-class="true"/>這樣配置則是強(qiáng)制使用CGLIB進(jìn)行代理
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot集成flyway自動(dòng)創(chuàng)表的詳細(xì)配置
Flayway是一款數(shù)據(jù)庫(kù)版本控制管理工具,支持?jǐn)?shù)據(jù)庫(kù)版本自動(dòng)升級(jí),Migrations可以寫(xiě)成sql腳本,也可以寫(xiě)在java代碼里;本文通過(guò)實(shí)例代碼給大家介紹springboot集成flyway自動(dòng)創(chuàng)表的詳細(xì)過(guò)程,感興趣的朋友一起看看吧2021-06-06IDEA創(chuàng)建方法時(shí)如何快速添加注釋
這篇文章主要介紹了IDEA創(chuàng)建方法時(shí)如何快速添加注釋問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02mybatis plus代碼生成工具的實(shí)現(xiàn)代碼
這篇文章主要介紹了mybatis plus代碼生成工具的實(shí)現(xiàn)代碼,需要的朋友可以參考下2021-04-04Java 獲取網(wǎng)絡(luò)302重定向URL的方法
在本篇文章里小編給大家整理的是關(guān)于Java 獲取網(wǎng)絡(luò)302重定向URL的方法以及相關(guān)知識(shí)點(diǎn),有興趣的朋友們參考下。2019-08-08Springboot如何獲取配置文件application.yml中自定義的變量并使用
這篇文章主要介紹了Springboot中獲取配置文件(application.yml)中自定義的變量并使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09詳解如何配置springboot跳轉(zhuǎn)html頁(yè)面
這篇文章主要介紹了詳解如何配置springboot跳轉(zhuǎn)html頁(yè)面,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Maven坐標(biāo)和依賴的實(shí)現(xiàn)示例
本文主要介紹了Maven坐標(biāo)和依賴的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-04-04IDEA對(duì)使用了第三方依賴jar包的非Maven項(xiàng)目打jar包的問(wèn)題(圖文詳解)
這篇文章主要介紹了IDEA對(duì)使用了第三方依賴jar包的非Maven項(xiàng)目打jar包的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07