亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Springboot如何使用Aspectj實(shí)現(xiàn)AOP面向切面編程

 更新時(shí)間:2022年01月03日 11:32:29   作者:夢(mèng)碎--人醒  
這篇文章主要介紹了Springboot如何使用Aspectj實(shí)現(xiàn)AOP面向切面編程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

要在 Springboot中聲明 AspectJ 切面

需在 IOC 容器中將切面聲明為 Bean 實(shí)例 即加入@Component 注解;當(dāng)在 Spring IOC 容器中初始化 AspectJ 切面之后, Spring IOC 容器就會(huì)為那些與 AspectJ 切面相匹配的 Bean 創(chuàng)建代理.

在 AspectJ 注解中, 切面只是一個(gè)帶有 @Aspect 注解的 Java 類.

引入jar包       

網(wǎng)上都是說springboot使用Aspectj做面向切面編程的時(shí)候,只需要引入下面jar包依賴即可

<dependency>
?? ?<groupId>org.springframework.boot</groupId>
?? ?<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

但是我去編寫的時(shí)候,單單引入 spring-boot-starter-aop 的jar依賴的時(shí)候,像@Component、@Aspect等這些註解都不能使用,後來發(fā)現(xiàn)缺少aspectjweaver 這么個(gè)jar包,最后引入了下面的jar才解決問題 

? ? <dependency>
?? ?<groupId>aspectj</groupId>
?? ?<artifactId>aspectjweaver</artifactId>
?? ?<version>1.5.3</version>
? ? </dependency>?

網(wǎng)上也有說要在application.properties中添加

spring.aop.auto=true這個(gè)配置,才能開啟Aspectj注解的掃面,但是我去查詢了springboot全局配置文件,里面默認(rèn)配置為true(spring.aop.auto=true # Add @EnableAspectJAutoProxy),所以我沒有去做添加,功能沒有問題,切面能正常實(shí)現(xiàn)。

最后補(bǔ)充一點(diǎn)小知識(shí)

 AspectJ 支持 5 種類型的通知注解

1)@Before:  前置通知:在方法執(zhí)行之前執(zhí)行的通知

2)@After: 后置通知, 在方法執(zhí)行之后執(zhí)行 , 即方法返回結(jié)果或者拋出異常的時(shí)候, 下面的后置通知記錄了方法的終止.

3)@AfterRunning: 返回通知, 在方法返回結(jié)果之后執(zhí)行

ps:無論方法是正常返回還是拋出異常, 后置通知都會(huì)執(zhí)行. 如果只想在方法返回的時(shí)候記錄日志, 應(yīng)使用返回通知代替后置通知.

4)@AfterThrowing: 異常通知, 在方法拋出異常之后

5) @Around: 環(huán)繞通知, 圍繞著方法執(zhí)行(即方法前后都有執(zhí)行)

環(huán)繞通知是所有通知類型中功能最為強(qiáng)大的, 能夠全面地控制連接點(diǎn). 甚至可以控制是否執(zhí)行連接點(diǎn).

下面是我寫的一些通知的實(shí)例

大家可以參考一下

? ? ? ? /*
?? ? ? ?標(biāo)識(shí)這個(gè)方法是個(gè)前置通知, ?切點(diǎn)表達(dá)式表示執(zhí)行任意類的任意方法.
?? ? ? ?第一個(gè) * 代表匹配任意修飾符及任意返回值,?
?? ? ? ?第二個(gè) * 代表任意類的對(duì)象,
?? ? ? ?第三個(gè) * 代表任意方法,
?? ? ? ?參數(shù)列表中的 .. ?匹配任意數(shù)量的參數(shù)
?? ? */
?
? ? //@Before: ?前置通知
? ? @Before("execution (* com.lc.project..controller..*.*(..))")
? ? public void beforeMethod(JoinPoint joinPoint){
?? ? ? ?String methodName = joinPoint.getSignature().toString();
?? ? ? ?Object result= Arrays.asList(joinPoint.getArgs());
? ? ? ? ? ? System.out.println("The method name:"+methodName+"--value:"+result);
? ? }
?
? ? //@After: 后置通知
? ? @After("execution (* *.*(..))")
? ? public void afterMethod(JoinPoint joinPoint){
? ? ? ? ? ? ? ? String methodName = joinPoint.getSignature().getName();
? ? ? ? ? ? ? ? System.out.println("The method name:"+methodName+ " ends");
? ? }
? ? //@AfterRunning: 返回通知
? ? @AfterReturning(value="execution (* *.*(..))",returning="result")
? ? public void afterReturningMethod(JoinPoint joinPoint,Object result){
? ? ? ? ? ? ? ? String methodName = joinPoint.getSignature().getName();
? ? ? ? ? ? ? ? System.out.println("The method name:"+methodName+ " ends and result="+result);
? ? }
? ? //@AfterThrowing: 異常通知
? ? @AfterThrowing(value="execution (* *.*(..))",throwing="e")
? ? public void afterReturningMethod(JoinPoint joinPoint,Exception e){
? ? ? ? ? ? ? ? String methodName = joinPoint.getSignature().getName();
? ? ? ? ? ? ? ? System.out.println("The method name:"+methodName+ " ends and result="+e);
? ? }??

  以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。               

相關(guān)文章

  • Spring Cloud Alibaba Nacos Config加載配置詳解流程

    Spring Cloud Alibaba Nacos Config加載配置詳解流

    這篇文章主要介紹了Spring Cloud Alibaba Nacos Config配置中心實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 詳解如何使用Mybatis的攔截器

    詳解如何使用Mybatis的攔截器

    MyBatis?攔截器是?MyBatis?提供的一個(gè)強(qiáng)大特性,它允許你在?MyBatis?執(zhí)行其核心邏輯的關(guān)鍵節(jié)點(diǎn)插入自定義邏輯,從而改變?MyBatis?的默認(rèn)行為,本文給大家詳細(xì)介紹了如何使用Mybatis的攔截器,需要的朋友可以參考下
    2024-03-03
  • struts2框架入門

    struts2框架入門

    本文主要介紹了struts2框架的基礎(chǔ)入門知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • 使用Feign配置請(qǐng)求頭以及支持Https協(xié)議

    使用Feign配置請(qǐng)求頭以及支持Https協(xié)議

    這篇文章主要介紹了使用Feign配置請(qǐng)求頭以及支持Https協(xié)議,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java跨域問題的處理詳解

    Java跨域問題的處理詳解

    這篇文章主要給大家介紹了關(guān)于Java跨域問題處理的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • java 中sleep() 和 wait() 的對(duì)比

    java 中sleep() 和 wait() 的對(duì)比

    這篇文章主要介紹了java 中sleep() 和 wait() 的對(duì)比的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 使用Swagger直接上傳文件的方法

    使用Swagger直接上傳文件的方法

    這篇文章主要介紹了使用Swagger直接上傳文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java通過stmp協(xié)議發(fā)送郵件

    Java通過stmp協(xié)議發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了Java通過stmp協(xié)議發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 深入淺析springboot中static和templates區(qū)別

    深入淺析springboot中static和templates區(qū)別

    這篇文章主要介紹了springboot中static和templates區(qū)別,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Springboot實(shí)現(xiàn)阿里云通信短信服務(wù)有關(guān)短信驗(yàn)證碼的發(fā)送功能

    Springboot實(shí)現(xiàn)阿里云通信短信服務(wù)有關(guān)短信驗(yàn)證碼的發(fā)送功能

    短信驗(yàn)證碼是通過發(fā)送驗(yàn)證碼到手機(jī)的一種有效的驗(yàn)證碼系統(tǒng)。主要用于驗(yàn)證用戶手機(jī)的合法性及敏感操作的身份驗(yàn)證。下面通過本文大家分享Springboot實(shí)現(xiàn)阿里云通信短信服務(wù)有關(guān)短信驗(yàn)證碼的發(fā)送功能,一起看看吧
    2017-08-08

最新評(píng)論