欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用@Order控制配置類(lèi)/AOP/方法/字段的加載順序詳解

 更新時(shí)間:2022年02月14日 11:23:53   作者:公瑾子敬  
這篇文章主要介紹了使用@Order控制配置類(lèi)/AOP/方法/字段的加載順序詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@Order控制配置類(lèi)/AOP/方法/字段的加載順序

1.AOP加載順序

? ? @Component
? ? @Aspect
? ? @Order(1)
? ? public class Aspect1 {
?? ??? ?...
?? ??? ?System.out.println("aop-1 加載了");
?? ?}
? ? @Component
? ? @Aspect
? ? @Order(2)
? ? public class Aspect2 {
?? ??? ?...
?? ??? ?System.out.println("aop-2 加載了");
?? ?}

執(zhí)行順序: 

  • aop-1 加載了
  • aop-2 加載了

2.配置類(lèi)加載順序

@Configuration
@Order(1)
public class DemoConfig1 {
? ? @Bean
? ? public Demo1Service demo1Service(){
? ? ? ? System.out.println("config-1 加載了");
? ? ? ? return new Demo1Service();
? ? }
}
@Configuration
@Order(2)
public class DemoConfig2 {
? ? @Bean
? ? public Demo2Service demo2Service(){
? ? ? ? System.out.println("config-2 加載了");
? ? ? ? return new Demo2Service();
? ? }
}

執(zhí)行順序: 

  • config-1 加載了
  • config-2 加載了

tips:

Integer.MIN_VALUE <= Order <= Integer.MAX_VALUE

Order值越小,優(yōu)先級(jí)越高!

@Order的作用范圍:

ElementType.TYPE, ElementType.METHOD, ElementType.FIELD

@Order使用與Aop多切面執(zhí)行順序

@Order:設(shè)置該類(lèi)在spring容器中的加載順序, 越小越早優(yōu)先加載

多個(gè)Aop是可以切同一點(diǎn)的, 比如, 想把@ApiOperation(Swag注解的)地方再自定義增強(qiáng)一下, 比如 持久化一行操作日志到數(shù)據(jù)庫(kù), 那就可以自定義一個(gè)注解, 切同一個(gè)位置, 干你自己想干的事.

那多個(gè)Aop的優(yōu)先順序(默認(rèn)按切面工具類(lèi)的名稱(chēng)首字母a-z執(zhí)行順序, 也就是spring默認(rèn)的加載順序), 可以使用@order自己定義順序,

值得注意的是:

  • 環(huán)繞前置(即point.proceed()前面的代碼)
  • 環(huán)繞后置(即point.proceed()后面的代碼)
try{  
     try{  
         doBefore();//對(duì)應(yīng)@Before注解的方法切面邏輯  
         method.invoke();  
     }finally{  
         doAfter();//對(duì)應(yīng)@After注解的方法切面邏輯  
     }  
     doAfterReturning();//對(duì)應(yīng)@AfterReturning注解的方法切面邏輯 
     //在 
 }catch(Exception e){  
      doAfterThrowing();//對(duì)應(yīng)@AfterThrowing注解的方法切面邏輯  
 } 

另外, 如果情況是允許耦合的, 可以創(chuàng)建新注解繼承原注解, 或這繼承多個(gè)原注解, 這樣就自定義擴(kuò)展并組合注解了

todo:@AfterReturning的使用

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

相關(guān)文章

  • Java執(zhí)行cmd命令的舉例與注意事項(xiàng)

    Java執(zhí)行cmd命令的舉例與注意事項(xiàng)

    Java應(yīng)用程序主要是通過(guò)Runtime和Process兩個(gè)類(lèi)來(lái)執(zhí)行cmd命令,下面這篇文章主要給大家介紹了關(guān)于Java執(zhí)行cmd命令的方法與注意事項(xiàng),文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • 解決Java?結(jié)構(gòu)化數(shù)據(jù)處理開(kāi)源庫(kù)?SPL的問(wèn)題

    解決Java?結(jié)構(gòu)化數(shù)據(jù)處理開(kāi)源庫(kù)?SPL的問(wèn)題

    這篇文章主要介紹了Java?結(jié)構(gòu)化數(shù)據(jù)處理開(kāi)源庫(kù)?SPL的問(wèn)題,Scala提供了較豐富的結(jié)構(gòu)化數(shù)據(jù)計(jì)算函數(shù),但編譯型語(yǔ)言的特點(diǎn),也使它不能成為理想的結(jié)構(gòu)化數(shù)據(jù)計(jì)算類(lèi)庫(kù),對(duì)此內(nèi)容感興趣的朋友一起看看吧
    2022-03-03
  • Java詳細(xì)講解不同版本的接口語(yǔ)法和抽象類(lèi)與接口的區(qū)別

    Java詳細(xì)講解不同版本的接口語(yǔ)法和抽象類(lèi)與接口的區(qū)別

    對(duì)于面向?qū)ο缶幊虂?lái)說(shuō),抽象是它的一大特征之一,在?Java?中可以通過(guò)兩種形式來(lái)體現(xiàn)OOP的抽象:接口和抽象類(lèi),下面這篇文章主要給大家介紹了關(guān)于Java入門(mén)基礎(chǔ)之抽象類(lèi)與接口的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Java 并行數(shù)據(jù)處理和性能分析

    Java 并行數(shù)據(jù)處理和性能分析

    這篇文章主要介紹了Java 并行數(shù)據(jù)處理和性能分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • Java設(shè)計(jì)模式七大原則之接口隔離原則詳解

    Java設(shè)計(jì)模式七大原則之接口隔離原則詳解

    接口隔離原則(Interface Segregation Principle),又稱(chēng)為ISP原則,就是在一個(gè)類(lèi)中不要定義過(guò)多的方法,接口應(yīng)該盡量簡(jiǎn)單細(xì)化。本文將為大家具體介紹一下Java設(shè)計(jì)模式七大原則之一的接口隔離原則,需要的可以參考一下
    2022-02-02
  • Java中進(jìn)程與線(xiàn)程的區(qū)別

    Java中進(jìn)程與線(xiàn)程的區(qū)別

    這篇文章主要介紹了Java進(jìn)程與線(xiàn)程的區(qū)別,進(jìn)程(Process)是操作系統(tǒng)分配資源的基本單位,線(xiàn)程(Thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的基本單位,下文更多兩者區(qū)別。需要的小伙伴可以參考一下
    2022-05-05
  • SpringBoot?集成短信和郵件的配置示例詳解

    SpringBoot?集成短信和郵件的配置示例詳解

    這篇文章主要介紹了SpringBoot?集成短信和郵件的相關(guān)知識(shí),項(xiàng)目中使用lombok插件和swagger依賴(lài),無(wú)相關(guān)依賴(lài)的請(qǐng)自行修改,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Spring項(xiàng)目XML文件使用小結(jié)

    Spring項(xiàng)目XML文件使用小結(jié)

    這篇文章主要介紹了Spring項(xiàng)目XML文件使用常見(jiàn)介紹,主要包括項(xiàng)目pom文件,項(xiàng)目初始IOC容器及項(xiàng)目需要自動(dòng)裝配的代碼詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 詳解jvm中的標(biāo)量替換

    詳解jvm中的標(biāo)量替換

    這篇文章主要介紹了詳解jvm中的標(biāo)量替換,幫助大家更好的理解和使用Java虛擬機(jī),感興趣的朋友可以了解下
    2020-09-09
  • Java 實(shí)現(xiàn)repalceAll只替換第二個(gè)匹配到的字符串

    Java 實(shí)現(xiàn)repalceAll只替換第二個(gè)匹配到的字符串

    這篇文章主要介紹了Java 實(shí)現(xiàn)repalceAll只替換第二個(gè)匹配到的字符串,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12

最新評(píng)論