1:在加载Spring容器时,加载多个@Configuration类。
需要继承AbstractAnnotationConfigDispatcherServletInitializer类,并重写其方法来加载@Configuration标注的类
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { FirstConfig.class,SecondConfig.class };
}
或者
AnnotationConfigApplicationContext aContext = new AnnotationConfigApplicationContext();
aContext.register(FirstConfig.class);
aContext.register(SecondConfig.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 都是可以互相引用的。