因此,假设我的主要 bean 带有注释@Service,该 bean 被注入到另一个具有 @Autowired 的服务中。
@Service
@Order(100)
class MainService() {
fun helloWorld() = "Hello"
}
我想在使用另一个配置文件fg运行时扩展此服务。(“自定义”)。所以我有如下服务:
@Service("mainService")
@Order(1)
class CustomService: MainService() {
override fun helloWorld() = "Hello custom"
}
但我有一个例外:
原因:org . spring framework . context . Annotation . conflictingbean definitionexception:bean类[MainService]的批注指定的bean名称“mainService”与现有的、不兼容的同名和类[CustomService]的bean定义冲突
你知道我如何扩展和覆盖同名的 bean 吗?这是因为我需要在其他地方自动连接它
您可以使用配置bean来执行此操作:
@Configuration
@Profile("dev")
public class MainServiceDev {
@Bean
public MainService mainService() {
return new MainService();
}
}
@Configuration
@Profile("custom")
public class MainServiceCustom {
@Bean
public CustomService customService() {
return new CustomService();
}
}