【发布时间】:2012-10-06 03:41:55
【问题描述】:
我正在尝试创建一个 MainConfig,它使用 @Bean 方法而不是像这样的 @Import 导入另一个 Config:
@Configuration
public class MainConfig {
@Bean
public Service service() {
return new Service(infrastructureConfig().database());
}
@Bean
public OtherService otherService() {
return new OtherService(infrastructureConfig().database());
}
@Bean
public InfrastructureConfig intrastructureConfig() {
return new InfrastructureConfig();
}
}
@Configuration
public class InfrastructureConfig {
@Bean
public Database database() {
return new Database();
}
...
}
使用这种技术时,数据库会被创建两次,因为 Spring 似乎没有考虑 InfrastructureConfig 上的 @Configuration 注解。使用@Import 时,效果很好。
我不想使用@Import,因为我想像这样模拟我的 InfrastructureConfig:
@Configuration
public class TestConfig extends MainConfig {
@Override
public InfrastructureConfig infrastructureConfig() {
return mock(InfrastructureConfig.class);
}
}
是我遗漏了什么还是不支持?
谢谢
【问题讨论】: