重写配置是spring



我的情况是这样的。我有一个父项目,它的bean配置如下

@Configuration
public class Configuration {
@Bean
public BeanA beanA(@Autowired BeanB beanB) {
return new BeanA(beanB);
}

我想重写这个配置,因为我需要重写BeanB上的一些定义。

@Configuration
public class Configuration {
@Bean
public BeanA beanA(@Autowired BeanC beanC) {
return new BeanA(beanC);
}

其中C类型的bean

public class BeanC extends BeanB { ... }

但当我运行应用程序时,我总是得到来自父母的配置。还启用了bean定义重写

spring.main.allow-bean-definition-overriding=true

有没有人知道我如何告诉spring容器使用我的bean定义,而不是来自我的父项目的定义。提前感谢!

您可以使用@Primary注释来注释bean(参见:https://www.baeldung.com/spring-primary)

@Configuration
public class Configuration {
@Primary
@Bean
public BeanA beanA(@Autowired BeanC beanC) {
return new BeanA(beanC);
}

最新更新