0
假設我們有一個基於XML的配置開始,說main.xml
,即通過導入一個java配置FullConfig.java
:傳遞納入@Configuration類的從基於的.xml彈簧配置
<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配置,其中包含DataClazz
類型的tmpBean
的定義,
@Configuration
public class IncludeConfig {
@Bean
public DataClazz tmpBean() {
return new DataClazz();
}
}
現在兩個問題:
- 這是「傳遞列入」保證春季工作(即是
someOtherBean()
保證不會拋出NPE)? - IntelliJ版本2017.2確實標記爲
@Qualifier(value = "tmpBean")
,並顯示消息「無法找到具有限定符'tmpBean'的bean」。如果這被認爲是一個錯誤?
注意:我檢查了使用ClassPathXmlApplicationContext("main.xml")
的應用程序確實工作正常,即沒有引發NPE(並且所有相關的bean都可見)。
感謝您指出'someOtherBean()'中的類型。糾正。關於(1)我確實嘗試了,它似乎工作;但是,在複雜得多的環境中我們遇到了類似的問題,所以我想知道這是否能夠在春季保證正常工作(比如,Spring 4.0.6+)。關於(2):與IDEA-82844相反,IntelliJ確實認爲沒有這樣的bean;導航(按Ctrl +鼠標點擊不起作用)。 –