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

SpringBoot中的ImportSelector類動態(tài)加載bean詳解

 更新時間:2024年01月29日 08:54:49   作者:梨輕巧  
這篇文章主要介紹了SpringBoot中的ImportSelector類動態(tài)加載bean詳解,ImportSelector接口是spring中導入外部配置的核心接口,根據(jù)給定的條件(通常是一個或多個注釋屬性)判定要導入那個配置類,在spring自動化配置和@EnableXXX中都有它的存在,需要的朋友可以參考下

ImportSelector類動態(tài)加載bean

實現(xiàn)ImportSelector類→ 動態(tài)加載bean → 源碼中大量使用

代碼

package com.qing.config;
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;
import java.util.Map;
public class MyImportSelector implements ImportSelector {
    @Override
    public String[] selectImports(AnnotationMetadata metadata) {
        //metadata元數(shù)據(jù) : 指的是加載本類MyImportSelector的類
        //metadata的get、has、is 有大量方法,可以用來獲取判斷數(shù)據(jù)
        Map<String, Object> annotationAttributes = metadata.getAnnotationAttributes("org.springframework.context.annotation.ComponentScan");
        System.out.println("注解"+annotationAttributes);
        boolean hasConfiguration = metadata.hasAnnotation("org.springframework.context.annotation.Configuration");
        if(hasConfiguration){
            return new String[]{"com.qing.bean.cat"};
        }
        return new String[]{"com.qing.bean.dog"};
    }
}

元數(shù)據(jù)metadata指的是下面的config6

package com.qing.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
//@Configuration 注解是測試用的
@Configuration
//@ComponentScan 注解是測試用的
@ComponentScan("com.qing.bean")
@Import(MyImportSelector.class)
public class SpringConfig6 {
}

測試

package com.qing.app;
import com.qing.config.SpringConfig6;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App6 {
    public static void main(String[] args) {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig6.class);
        String[] names = ctx.getBeanDefinitionNames();
        for (String name : names) {
            System.out.println("bean的名字:" + name);
        }
    }
}

 結果

因為元數(shù)據(jù)上有@Configuration注解,所以返回的是cat

元數(shù)據(jù)上沒有@Configuration注解了,所以返回的是dog

總結

到此這篇關于SpringBoot中的ImportSelector類動態(tài)加載bean詳解的文章就介紹到這了,更多相關ImportSelector類動態(tài)加載bean內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java JVM原理與常識知識點

    java JVM原理與常識知識點

    在本文中小編給大家分享的是關于java的JVM原理和java常識,有興趣的朋友們可以學習下
    2018-12-12
  • Java實現(xiàn)自動把報表插入到word文檔中

    Java實現(xiàn)自動把報表插入到word文檔中

    在很多業(yè)務場景中需要在 word 文檔中嵌入報表,這篇文章主要為大家介紹了如何使用Java實現(xiàn)自動把報表插入到word文檔中,需要的可以參考下
    2024-12-12
  • springboot使用swagger-ui 2.10.5 有關版本更新帶來的問題小結

    springboot使用swagger-ui 2.10.5 有關版本更新帶來的問題小結

    這篇文章主要介紹了springboot使用swagger-ui 2.10.5 有關版本更新帶來的問題小結,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java?中的?clone(?)?和?new哪個效率更高

    Java?中的?clone(?)?和?new哪個效率更高

    很多朋友不太清楚clone()和new那個更快?針對這個問題我百度了好多資料,最終小編總結下關于Java?中的?clone(?)?和?new哪個效率更高的問題,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • 詳解spring boot starter redis配置文件

    詳解spring boot starter redis配置文件

    spring-boot-starter-Redis主要是通過配置RedisConnectionFactory中的相關參數(shù)去實現(xiàn)連接redis service。下面通過本文給大家介紹在spring boot的配置文件中redis的基本配置,需要的的朋友參考下
    2017-07-07
  • Mybatis返回int或者Integer類型報錯的解決辦法

    Mybatis返回int或者Integer類型報錯的解決辦法

    這篇文章主要介紹了Mybatis返回int或者Integer類型報錯的解決辦法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • Java中的接口及其應用場景解讀

    Java中的接口及其應用場景解讀

    這篇文章主要介紹了Java中的接口及其應用場景解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Spring中DAO被循環(huán)調用的時候數(shù)據(jù)不實時更新的解決方法

    Spring中DAO被循環(huán)調用的時候數(shù)據(jù)不實時更新的解決方法

    這篇文章主要介紹了Spring中DAO被循環(huán)調用的時候數(shù)據(jù)不實時更新的解決方法,需要的朋友可以參考下
    2014-08-08
  • Java信號量全解析

    Java信號量全解析

    這篇文章主要介紹了Java信號量的相關資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-01-01
  • Java Spring Cloud 負載均衡詳解

    Java Spring Cloud 負載均衡詳解

    這篇文章主要介紹了Spring Cloud負載均衡及遠程調用實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-09-09

最新評論