假设我们从基于xml的配置开始,比如main.xml
,它通过以下方式导入java配置FullConfig.java
:
<context:annotation-config/>
<bean class="test.FullConfig"/>
此java配置具有以下形式:
@Configuration
@Import(value = {IncludeConfig.class})
public class FullConfig {
@Autowired
@Qualifier(value = "tmpBean")
private DataClazz autowired;
@Bean
public DataClazz someOtherBean() {
System.out.println("Using autowired tmpBean:" + autowired);
return new DataClazz();
}
}
所以它导入了另一个java配置,其中包含tmpBean
类型DataClazz
的定义,
@Configuration
public class IncludeConfig {
@Bean
public DataClazz tmpBean() {
return new DataClazz();
}
}
现在有两个问题:
someOtherBean()
保证不会抛出NPE)?@Qualifier(value = "tmpBean")
标记为红色,并显示消息“无法找到带限定符的bean'tmpBean'”。这应该被视为一个错误吗?注意:我已经检查过使用ClassPathXmlApplicationContext("main.xml")
的应用程序是否正常工作,即没有抛出NPE(并且所有相关的bean都可见)。
答案 0 :(得分:1)
您需要返回DataClazz:
@Bean
public DataClazz someOtherBean() {
System.out.println("Using autowired tmpBean:" + autowired);
return autowired;
}