Spring擁有多個JavaConfig(@Configuration)的情況

1:在加載Spring容器時,加載多個@Configuration類。 

需要繼承AbstractAnnotationConfigDispatcherServletInitializer類,並重寫其方法來加載@Configuration標註的類

@Override

protected Class<?>[] getServletConfigClasses() {

      return new Class<?>[] { FirstConfig.class,FirstConfig.class };

}

或者

AnnotationConfigApplicationContext aContext = new AnnotationConfigApplicationContext();
aContext.register(FirstConfig.class);
aContext.register(FirstConfig.class);
aContext.refresh();

2:在加載Spring容器時,加載單個@Configuration類,但要通過@Import 方式整合其他@Configuration類。

@Configuration
@Import(SecondConfig.class)
public class FirstConfig {

    @Bean
    public FirstServiceImpl firstServiceImpl(SecondService secondService){
        FirstServiceImpl fImpl = new FirstServiceImpl();
         fImpl.setSecondService(secondService);
         return fImpl;
    }
}


原理總結:

1、@Configuration類會先合併,後解析,也就是說,配置的內容會合並處理。

2、因爲多個 @Configuration類最終會合併到一起(形成一個 ApplicationContext),因此這些配置中的 bean 都是可以互相引用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章