【发布时间】:2021-06-26 04:47:09
【问题描述】:
我有一个配置类
@Configuration
public class FooConfig{
@Bean
public FooService fooService() { ... }
@Bean
public AbcService abcService() { ... }
}
该类是在我无法更改的库中定义的。我有一个项目,在很多地方都使用了FooService。在我的项目中,我有另一个配置类
@Configuration
@Import({
FooConfig.class,
})
public class BarConfig{
@Autowired AbcService abc;
...
}
这里使用AbcService,因为有些服务依赖于该服务,并且这些服务在BarConfig 中声明。但是这里没有使用FooService(它只在控制器中使用)
我需要更改FooService 的实现。我可以在BarConfig 中定义新的FooService bean 吗?它会覆盖通过FooConfig 导入的现有定义吗?
【问题讨论】:
-
你能继承
FooConfig,然后不在你的上下文扫描中包含它吗? -
这是个坏主意,仅适用于一种情况的特殊挂钩。我建议
BarConfig作为根配置类 -
我的意思是
BarConfig extends FooConfig有一个覆盖方法。 (或者你自己的MyFooConfig并导入它。) -
我的意思是
BarConfig extends FooConfig是个坏主意。如果我有几个这样的FooConfig怎么办?