Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于.xml的spring配置中@Configuration类的可传递包含_Spring_Intellij Idea - Fatal编程技术网

基于.xml的spring配置中@Configuration类的可传递包含

基于.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

假设我们从一个基于xml的配置开始,比如说
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();
    }
}
现在有两个问题:

  • 这个“可传递包含”是否保证在spring中工作(即
    someOtherBean()
    是否保证不会抛出NPE)
  • 2017.2版之前的IntelliJ将
    @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;
    }
    
  • 可能是的,但试着测试一下
  • IDEA-82844(错误)

  • 感谢您指出
    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;
    }