中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~注(zhu)冊不(bu)同級(ji)別包里(li)的bean~ImportSelector

上次回說了@SpringBootApplication里的scanBasePackages里來實現不同級別包的加載問題,而這次主要說一下ImportSelector來實現加載不同包的方法,事實上,在springboot里,所有的Enable開頭的組件也是使用的這種方式來實現的。
nacos組件里的體現
nacos
異步組件里的體現
async

@SpringBootApplication注解里也實現了@ComponentScan,所以scanBasePackages其(qi)實就是@ComponentScan里的basePackages參數

ImportSelector實現不同包的加載

首先,定義一個需要的bean對象(xiang),比如一個monodb的配置對象(xiang)

@Configuration
public class MongodbConfig {
    public void print() {
        System.out.println("hello mongodb!");
    }
}

之后,對這個對象進(jin)行一個ImportSelector接(jie)口的實現

public class MongodbSelector implements ImportSelector {
    public String[] selectImports(AnnotationMetadata annotationMetadata) {
        return new String[]{MongodbConfig.class.getName()};
    }
}

最后,按著springboot一慣的作用,添加呈(cheng)個(ge)Enable的注解,以向外界開啟它

/**
 * 自定義注釋,引用不同包里的配置默認項.
 */
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Target(ElementType.TYPE)
@Import(MongodbSelector.class)
public @interface EnableMongodb {
}

然后在對象的項(xiang)目(mu)main方(fang)法的入口類上,開高這個注(zhu)解

@SpringBootApplication(scanBasePackages = {"com.lind.nacosdemo", "com.lind.redis"})
@EnableDiscoveryClient
@EnableMongodb
public class NacosDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosDemoApplication.class, args);
    }
}

最后測試的結果如下,我們之前的redis和現在的mongodb都被打印出來了。
test
最后,再總結(jie)一下(xia),一般我(wo)們在開(kai)發(fa)自定義的start包時,都使用了ImportSelector類。

posted @ 2020-06-10 14:35  張占嶺  閱讀(939)  評論(0)    收藏  舉報