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 都是可以互相引用的。