基于.xml的spring配置中@Configuration类的可传递包含
假设我们从一个基于xml的配置开始,比如说基于.xml的spring配置中@Configuration类的可传递包含,spring,intellij-idea,Spring,Intellij Idea,假设我们从一个基于xml的配置开始,比如说main.xml,它通过以下方式导入java配置FullConfig.java: <context:annotation-config/> <bean class="test.FullConfig"/> 因此它导入了另一个java配置,其中包含DataClazz类型的tmpBean定义 @Configuration public class IncludeConfig { @Bean public DataCla
main.xml
,它通过以下方式导入java配置FullConfig.java
:
<context:annotation-config/>
<bean class="test.FullConfig"/>
因此它导入了另一个java配置,其中包含DataClazz
类型的tmpBean
定义
@Configuration
public class IncludeConfig {
@Bean
public DataClazz tmpBean() {
return new DataClazz();
}
}
现在有两个问题:
someOtherBean()
是否保证不会抛出NPE)@Qualifier(value=“tmpBean”)
标记为红色,并显示一条消息“找不到具有限定符“tmpBean”的bean”。这应该被认为是一个bug吗注意:我已经检查了使用
ClassPathXmlApplicationContext(“main.xml”)
的应用程序是否正常工作,即没有抛出NPE(并且所有相关bean都可见) 您需要返回DataClazz:
@Bean
public DataClazz someOtherBean() {
System.out.println("Using autowired tmpBean:" + autowired);
return autowired;
}
感谢您指出
someOtherBean()
中的类型;更正。在(1)上,我确实尝试过,而且似乎有效;然而,在更复杂的环境中,我们也有类似的问题,所以我想知道spring是否保证了这一点(比如Spring4.0.6+)。关于(2):与IDEA-82844相反,IntelliJ真的认为没有这样的bean;导航(ctrl+鼠标单击不起作用)。
@Bean
public DataClazz someOtherBean() {
System.out.println("Using autowired tmpBean:" + autowired);
return autowired;
}