我在spring.xml中定义了一个现有的bean spring.xml,我希望使用注释覆盖它。我尝试了以下操作来覆盖bean:
@Configuration
@ImportResource({"/spring.xml"})
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DdwMain.class);
Object o = context.getBean("overrideBean");
// o should be null but it is not
}
@Bean(name="overrideBean")
public OverrideBean overrideBean() {
return null;
}
}使用上面的代码,spring.xml配置中的bean总是被实例化并由context.getBean调用返回。
可以通过在@ImportResource中包含另一个XML文件来覆盖bean,但是我更希望找到一个使用注释的解决方案,这样会更干净。
发布于 2013-08-23 14:14:42
通常,xml注册的bean具有优先权。因此,您可以用xml配置的bean覆盖带注释的bean,但是您正试图以相反的方式来实现它。您可以不使用不同的bean名称并使用@限定符注释在多个候选名称中选择它吗?
大多数情况下,将xml与自动扫描相结合是很容易出错的。
https://stackoverflow.com/questions/18400850
复制相似问题