文章目录
多个配置元数据的合并
在实际开发中,一般不会将所有的配置元数据放到同一个XML(或基于Java的配置类)中。
因为配置元数据也有主次(或称为父子)之分,这样结构分明,也便于管理,便于协同开发。
举个例子,可以将MVC架构中,将Dao层和Service层的JavaBean配置在不同的配置元数据中,再使用一个总的配置元数据,将Dao层和Service层的配置元数据合并起来(类似于C语言的include头文件引入)。
Service层的配置元数据:
@Configuration
public class ServiceConfig {
@Bean
public TransferService transferService(AccountRepository accountRepository) {
return new TransferServiceImpl(accountRepository);
}
}
Dao层的配置元数据:
@Configuration
public class RepositoryConfig {
@Bean
public AccountRepository accountRepository(DataSource dataSource) {
return new JdbcAccountRepository(dataSource);
}
}
总的配置元数据
@Configuration
@Import({ServiceConfig.class, RepositoryConfig.class})
public class SystemTestConfig {
@Bean
public DataSource dataSource() {
// return new DataSource
}
}
上面展示了基于Java的配置元数据的合并,接下来仔细讨论不同的合并方式。
1.基于XML
<import/>
标签
<beans>
<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
</beans>
多个XML传入构造器
当容器创建时,可以将多个XML文件通过参数传递给构造器,进而实现配置元数据的和并。
ApplicationContext context