最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring中的@DependsOn注解使用解析

 更新時間:2024年01月25日 09:17:38   作者:znoone  
這篇文章主要介紹了Spring中的@DependsOn注解使用解析,@DependsOn注解可以定義在類和方法上,意思是我這個組件要依賴于另一個組件,也就是說被依賴的組件會比該組件先注冊到IOC容器中,需要的朋友可以參考下

@DependsOn定義/作用

@DependsOn注解可以定義在類和方法上,意思是我這個組件要依賴于另一個組件,也就是說被依賴的組件會比該組件先注冊到IOC容器中。

使用場景: 需要用到觀察者模式的情況下通常都需要用到該注解,觀察者模式(詳細可查看相關文章)有三要輸,觀察者、事件源、事件,機制是觀察者會監(jiān)聽數(shù)據(jù)源的某些時間,當事件源觸發(fā)該事件后,觀察者就會知道進行相應措施。

比如老師是觀察者,學生是事件源,學生遲到是事件,老師觀察學生是否遲到,每當學生遲到,老師就會發(fā)現(xiàn),并處罰該學生。

這類場景一般需要觀察者要比事件源先創(chuàng)建,才能不遺漏事件源觸發(fā)的每一個事件,要是事件源先創(chuàng)建,可能會在觀察者創(chuàng)建前就觸發(fā)了事件而觀察者無法知道。

比如上述例子,八點算遲到,但是老師自己都八點半才到學校,所以就無法知道八點到八點半之間遲到的學生。

源碼

//可以作用在方法和類上。
//當作用在類上時,通常會與@Component及其衍生注解等注解配合使用。
//當作用在方法上時,通常會與@Bean注解配合使用。
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DependsOn {
	//要依賴的bean id,是個數(shù)組,也就是說可以依賴多個bean。
	//效果是該注解作用的bean會比value設置的依賴bean晚實例化到容器中。
    String[] value() default {};
}
 

demo(與@Component配合使用)

/**
 * 事件源
 */
@Component
public class EventSource {
    public EventSource(){
        System.out.println("事件源創(chuàng)建");
    }
}
/**
 * 監(jiān)聽類
 */
@Component
public class EventTListener {
    public EventTListener(){
        System.out.println("監(jiān)聽器創(chuàng)建");
    }
}
//測試類:
@Configuration
@ComponentScan(basePackages = "dependsondemo")
public class SpringConfig {
}
 

結果:

在這里插入圖片描述

在這里插入圖片描述

分析:因為spring默認掃描包時會根據(jù)文件在文件夾的位置先后順序掃描加載,而EventSource 文件位置在EventTListener前面,所以會先加載EventSource 事件源組件。這不符合邏輯。

使用@DependsOn注解

@Component
@DependsOn(value = {"eventTListener"})
public class EventSource {
    public EventSource(){
        System.out.println("事件源創(chuàng)建");
    }
}
 

結果:

在這里插入圖片描述

監(jiān)聽器先創(chuàng)建了。value屬性的bean id必須存在,不然會報錯。

demo(與Bean注解配合使用)

//要把上面兩個組件類上的注解去掉,再使用下面
@Configuration
@ComponentScan(basePackages = "dependsondemo")
public class SpringConfig {
    @Bean
    @DependsOn(value = {"eventListener"})
    public EventSource eventSource(){
        return new EventSource();
    }
    @Bean
    public EventTListener eventListener(){
        return new EventTListener();
    }
}
 

結果: 如果不加@DependsOn注解的話,就會先創(chuàng)建事件源,如果加了(如上代碼),就會先創(chuàng)建監(jiān)聽器。

到此這篇關于Spring中的@DependsOn注解使用解析的文章就介紹到這了,更多相關@DependsOn注解使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java多線程之線程狀態(tài)詳解

    Java多線程之線程狀態(tài)詳解

    這篇文章主要介紹了Java多線程 線程狀態(tài)原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-09-09
  • @RefreshScope 自動刷新配置文件的實例講解

    @RefreshScope 自動刷新配置文件的實例講解

    efreshScope(org.springframework.cloud.context.scope.refresh)是spring cloud提供的一種特殊的scope實現(xiàn),用來實現(xiàn)配置、實例熱加載,這篇文章主要介紹了@RefreshScope 自動刷新配置文件,需要的朋友可以參考下
    2022-11-11
  • Java用戶交互scanner及運算結構代碼詳解

    Java用戶交互scanner及運算結構代碼詳解

    這篇文章主要介紹了Java用戶交互scanner及運算結構代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • java實現(xiàn)找出兩個文件中相同的單詞(兩種方法)

    java實現(xiàn)找出兩個文件中相同的單詞(兩種方法)

    這篇文章主要介紹了java實現(xiàn)找出兩個文件中相同的單詞(兩種方法),需要的朋友可以參考下
    2020-08-08
  • Java上轉型和下轉型對象

    Java上轉型和下轉型對象

    這篇文章給大家講述了Java上轉型和下轉型對象的詳細用法以及相關的代碼分享,有興趣的朋友可以學習下。
    2018-03-03
  • java快速解析路徑中的參數(shù)(&與=拼接的參數(shù))

    java快速解析路徑中的參數(shù)(&與=拼接的參數(shù))

    這篇文章主要介紹了java快速解析路徑中的參數(shù)(&與=拼接的參數(shù)),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-02-02
  • IDEA找不到database圖標的簡單圖文解決方法

    IDEA找不到database圖標的簡單圖文解決方法

    idea是一個功能十分強大的IDE,大家在使用他進行開發(fā)時候,必不可少的就是連接數(shù)據(jù)庫了,這篇文章主要給大家介紹了關于IDEA找不到database圖標的解決方法,需要的朋友可以參考下
    2024-07-07
  • JDK10新特性之本地變量類型var的深入理解

    JDK10新特性之本地變量類型var的深入理解

    這篇文章主要給大家介紹了J關于DK10新特性之本地變量類型var的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JDK10具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-05-05
  • SpringBoot+RabbitMQ實現(xiàn)消息可靠傳輸詳解

    SpringBoot+RabbitMQ實現(xiàn)消息可靠傳輸詳解

    消息的可靠傳輸是面試必問的問題之一,保證消息的可靠傳輸主要在生產端開啟?comfirm?模式,RabbitMQ?開啟持久化,消費端關閉自動?ack?模式。本文將詳解SpringBoot整合RabbitMQ如何實現(xiàn)消息可靠傳輸,需要的可以參考一下
    2022-05-05
  • Java抽象類的概念講解

    Java抽象類的概念講解

    今天小編就為大家分享一篇關于Java抽象類的概念講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02

最新評論

章丘市| 射洪县| 武乡县| 胶南市| 禄劝| 瓮安县| 远安县| 黄山市| 玉环县| 镇沅| 遵化市| 镇江市| 江永县| 依兰县| 河池市| 永和县| 宣恩县| 孝义市| 兴隆县| 青州市| 岗巴县| 齐齐哈尔市| 班戈县| 保亭| 大丰市| 麟游县| 舟山市| 永寿县| 五河县| 阿鲁科尔沁旗| 河南省| 凤城市| 东兴市| 新田县| 灌云县| 贡嘎县| 兴化市| 滨海县| 泰安市| 沁源县| 池州市|