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

Springboot中的@ConditionalOnBean注解詳細(xì)解讀

 更新時(shí)間:2023年11月14日 08:42:22   作者:你就像甜甜的益達(dá)  
這篇文章主要介紹了Springboot中的@ConditionalOnBean注解詳細(xì)解讀,@ConditionalOnMissingBean注解兩個(gè)類(lèi),一個(gè)Computer類(lèi),一個(gè)配置類(lèi),想要完成;如果容器中沒(méi)有Computer類(lèi),就注入備用電腦Computer類(lèi),如果有Computer就不注入,需要的朋友可以參考下

@ConditionalOnMissingBean測(cè)試

首先學(xué)習(xí): @ConditionalOnMissingBean注解

兩個(gè)類(lèi),一個(gè)Computer類(lèi),一個(gè)配置類(lèi),想要完成;如果容器中沒(méi)有Computer類(lèi),就注入備用電腦Computer類(lèi),如果有Computer就不注入;

computer類(lèi):

@Data
@AllArgsConstructor
public class Computer {

    public String name;

}

配置類(lèi):

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BeanConfig {

//    @Bean(name = "notebookPC")
    public Computer computer1() {
        return new Computer("筆記本電腦");
    }

//    @ConditionalOnBean(Computer.class)
    @ConditionalOnMissingBean(Computer.class)
    @Bean("notebookPC")
    public Computer computer2() {
        return new Computer("備用電腦");
    }
}

測(cè)試啟動(dòng)類(lèi):

在這里插入圖片描述

public class ConditionOnBeanTest extends BaseTest implements ApplicationContextAware {

    @Test
    public void test1() {
        Map<String, Computer> beansOfType = ApplicationContext.getBeansOfType(Computer.class);

        System.out.println(JSON.toJSONString(beansOfType));

    }

    public ApplicationContext ApplicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.ApplicationContext = applicationContext;
    }
}

執(zhí)行測(cè)試類(lèi):

在這里插入圖片描述

容器中加載的是筆記本,將筆記本去掉走一波:

在這里插入圖片描述

容器中注入的是備用電腦,很明了…

在這里插入圖片描述

@ConditionalOnBean

再來(lái)講@ConditionalOnBean注解就會(huì)很簡(jiǎn)單,跟@ConditionalOnMissingBean相反。 @ConditionalOnBean注解是,如果有容器中有Computer類(lèi),就注入備用電腦Computer類(lèi),如果沒(méi)有Computer就不注入;可以自己換個(gè)注解試一下就知道了,

在這里插入圖片描述

源碼分析

一起看下@ConditionalOnMissingBean的聲明:

在這里插入圖片描述

@Condition注解使用的是OnBeanCondition類(lèi),我們就看下這個(gè)類(lèi).這個(gè)類(lèi)繼承FilteringSpringBootCondition,就看繼承的,FilteringSpringBootCondition又繼承SpringBootCondition,點(diǎn)到SpringBootCondition,看到了我們熟悉的方法,matches方法.

在這里插入圖片描述

在這里插入圖片描述

我們一起看看matche方法

在這里插入圖片描述

看最重要的方法的實(shí)現(xiàn);

在這里插入圖片描述

主要就在這個(gè)方法里面:

在這里插入圖片描述

返回的對(duì)象:

在這里插入圖片描述

getMatchingBeans方法比較復(fù)雜,也比較簡(jiǎn)單,就是根據(jù)當(dāng)前上下文容器,查找是否存在對(duì)應(yīng)的類(lèi),SearchStrategy 這個(gè)枚舉定義了搜索的范圍,All就是搜索整個(gè)上下文,父子容器等等,ANCESTORS搜索所有祖先,除開(kāi)當(dāng)前上下文,CURRENT,就是當(dāng)前上下文

在這里插入圖片描述

然后就對(duì)著上下文一頓操作,返回結(jié)果.

到此這篇關(guān)于Springboot中的@ConditionalOnBean注解詳細(xì)解讀的文章就介紹到這了,更多相關(guān)@ConditionalOnBean注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決RedisTemplate調(diào)用increment報(bào)錯(cuò)問(wèn)題

    解決RedisTemplate調(diào)用increment報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了解決RedisTemplate調(diào)用increment報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • kotlin改善java代碼實(shí)例分析

    kotlin改善java代碼實(shí)例分析

    我們給大家整理了關(guān)于kotlin改善java代碼的相關(guān)實(shí)例以及操作的詳細(xì)方法,有需要的讀者們參考下。
    2018-03-03
  • 解讀classpath讀取resources目錄下的文件

    解讀classpath讀取resources目錄下的文件

    這篇文章主要介紹了解讀classpath讀取resources目錄下的文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java中的@Data是什么以及如何使用

    Java中的@Data是什么以及如何使用

    Data是Lombok?項(xiàng)目中的一個(gè)注解,Lombok?是一種?Java?庫(kù),它通過(guò)注解來(lái)簡(jiǎn)化代碼的編寫(xiě)過(guò)程,使用?Lombok?可以幫助開(kāi)發(fā)者減少樣板代碼,本文給大家介紹Java中的@Data是什么以及如何使用,感興趣的朋友一起看看吧
    2025-08-08
  • 詳解SpringBoot獲得Maven-pom中版本號(hào)和編譯時(shí)間戳

    詳解SpringBoot獲得Maven-pom中版本號(hào)和編譯時(shí)間戳

    這篇文章主要介紹了詳解SpringBoot獲得Maven-pom中版本號(hào)和編譯時(shí)間戳,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 使用Spring Boot框架整合Redis的超詳細(xì)案例教程

    使用Spring Boot框架整合Redis的超詳細(xì)案例教程

    本文詳細(xì)介紹了如何在SpringBoot項(xiàng)目中整合Redis,包括依賴(lài)配置、連接設(shè)置、基本操作和應(yīng)用案例,通過(guò)整合,可以充分利用SpringBoot和Redis的優(yōu)勢(shì),提升應(yīng)用性能和可擴(kuò)展性,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • Java中圖片的常用操作代碼總結(jié)

    Java中圖片的常用操作代碼總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Java中對(duì)圖片進(jìn)行常用操作處理的代碼,例如生成自定義圖片、獲取圖片格式、圖片的裁剪與壓縮等,感興趣的小伙伴可以了解一下
    2022-11-11
  • 解決springboot項(xiàng)目啟動(dòng)失敗Could not initialize class com.fasterxml.jackson.databind.ObjectMapper問(wèn)題

    解決springboot項(xiàng)目啟動(dòng)失敗Could not initialize class&

    這篇文章主要介紹了解決springboot項(xiàng)目啟動(dòng)失敗Could not initialize class com.fasterxml.jackson.databind.ObjectMapper問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • MyBatis-Plus 集成動(dòng)態(tài)多數(shù)據(jù)源的實(shí)現(xiàn)示例

    MyBatis-Plus 集成動(dòng)態(tài)多數(shù)據(jù)源的實(shí)現(xiàn)示例

    本文主要介紹了MyBatis-Plus 集成動(dòng)態(tài)多數(shù)據(jù)源的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • MyBatis動(dòng)態(tài)SQL標(biāo)簽用法實(shí)例詳解

    MyBatis動(dòng)態(tài)SQL標(biāo)簽用法實(shí)例詳解

    本文通過(guò)實(shí)例代碼給大家介紹了MyBatis動(dòng)態(tài)SQL標(biāo)簽用法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-07-07

最新評(píng)論

盱眙县| 芒康县| 邵阳县| 英吉沙县| 瓮安县| 德令哈市| 若尔盖县| 沛县| 宁陵县| 垦利县| 南城县| 手游| 新化县| 阿瓦提县| 浮梁县| 潞西市| 永仁县| 驻马店市| 韶山市| 鄯善县| 浏阳市| 娄烦县| 天台县| 莒南县| 白水县| 墨竹工卡县| 华蓥市| 大英县| 苏州市| 泽普县| 陈巴尔虎旗| 湛江市| 大连市| 德保县| 宁国市| 鄂尔多斯市| 天等县| 舟曲县| 梁平县| 桦川县| 军事|