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

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

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

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

實(shí)現(xiàn)ImportSelector類→ 動(dòng)態(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 注解是測(cè)試用的
@Configuration
//@ComponentScan 注解是測(cè)試用的
@ComponentScan("com.qing.bean")
@Import(MyImportSelector.class)
public class SpringConfig6 {
}

測(cè)試

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);
        }
    }
}

 結(jié)果

因?yàn)樵獢?shù)據(jù)上有@Configuration注解,所以返回的是cat

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

總結(jié)

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

相關(guān)文章

最新評(píng)論