2013-10-14 108 views
23

我正在構建一個新的應用程序,它通過java配置而不是xml來配置spring。此應用程序依賴於使用xml樣式配置的模塊。當我嘗試啓動我的應用程序時,出現以下錯誤:與彈簧混合xml和java配置

No qualifying bean of type [com.myModule.myServiceImp] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 

此bean應該在模塊的applicationContext.xml中聲明。處理這個問題的正確方法是什麼?我試圖簡單地增加它,因爲我想如果我是在應用程序的web.xml串應用程序上下文一起:

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      classpath:com/myModule/appbase-context.xml 
      com.myApp.AppConfig 
     </param-value> 
    </context-param> 

但我仍然得到了同樣的錯誤。什麼是正確的方法來做到這一點?

回答

44

在您的配置類中,您可以通過@ImportResource註釋導入xml配置。

事情是這樣的:

@Configuration 
@ImportResource({"classpath:appbase-context.xml"}) 
public class AppConfig { 
    // @Bean definitions here... 
} 

記住,當你使用Spring的Java配置,你需要指定一個額外的context-param,說使用您的應用程序上下文類:

<context-param> 
    <param-name>contextClass</param-name> 
    <param-value> 
     org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
    </param-value> 
</context-param> 
+0

我已經得到了第二部分,但感謝提醒。至於context.xml,我只需要導入它,它爲我做了休息嗎?或者我需要以某種方式「運行」它? –

+1

當'ApplicationContext'引導'@ Configuration'類的負載時,它將掃描這個註解並自動加載它。 –

+1

@ImportResource將運行它。 –