У меня есть класс конфигурации java, предоставляющий fooBean напрямую и barBean путем сканирования компонентов.
@Configuration
@ComponentScan(basePackages = { "com.blah" })
public class Config {
@Bean
public FooBean fooBean {
return new FooBean();
}
}
и я хочу повторно использовать его в тестовых случаях, и мне нужно заменить beans на mocks:
@Configuration
@Import(Config.class)
public class TestConfig {
@Bean
public FooBean fooBean {
return new FooBeanMock();
}
@Bean
public BarBean barBean {
return new BarBeanMock();
}
}
(здесь нет смысла повторно использовать Config, но в реальной жизни у меня 1000 beans, и мне нужно издеваться над несколькими)
Здесь fooBean переопределяется, но не barBean.
Skipping loading bean definition for %s: a definition for bean " + "'%s' already exists. This is likely due to an override in XML.
Существует также официальная проблема: https://jira.springsource.org/browse/SPR-9682
знает ли кто-нибудь обходное решение для переопределения bean, обнаруженного при проверке компонентов?
принимая во внимание, что bean является устаревшим кодом и не может быть изменен, и для его зависимостей нет привязки (частные атрибуты + @Resource).