所以,假设我已经用@Service注释了主bean,该@Bean被注入了@Autowired的另一个服务中。
@Service
@Order(100)
class MainService() {
fun helloWorld() = "Hello"
}
当我使用另一个配置文件fg运行时,我想扩展此服务。 (“自定义”)。因此,我的服务如下:
@Service("mainService")
@Order(1)
class CustomService: MainService() {
override fun helloWorld() = "Hello custom"
}
但是我遇到了这个异常:
由以下原因引起:org.springframework.context.annotation.ConflictingBeanDefinitionException:Bean类[MainService]的由注释指定的bean名称'mainService'与同名和类[CustomService]的现有,不兼容的bean定义发生冲突
您知道我如何以相同的名称扩展和覆盖bean吗?这是因为我需要将其自动布线到其他地方
答案 0 :(得分:0)
您可以使用配置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();
}
}