2013-10-14 107 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将运行它。 –