我有一个新的Web应用程序,作为多模块Maven项目的一部分打包为WAR.此WAR的applicationContext.xml引用从“service”模块导入的bean,后者又从“dao”模块导入bean. applicationContext.xml中的import语句如下所示:
而service.xml文件中的那个看起来像这样:
Spring STS和Eclipse都没有在我的bean文件中显示任何警告或错误.我在整个地方引用了进口的豆子. Maven构建工作正常,DAO集成测试全部通过(他们使用bean).我还没有任何服务集成测试.
但是当我在Jetty中启动WAR时,我收到一个错误:
Error creating bean with name 'securityService'
Cannot resolve reference to bean 'userDAO' while setting constructor argument
所有导入的bean XML文件都可以在WEB-INF / lib目录中的各自JAR文件中找到.实际上,抛出错误的服务bean本身是在服务模块的JAR文件内的service.xml文件中定义的.
显然,服务模块找不到它从dao模块导入的bean.显然我不明白的东西……看起来这应该只是工作吗?
最佳答案
我为’org.springframework’启用了DEBUG日志记录,以便查看我是否可以学到任何东西.我发现的是有关创建DAO bean的消息,但也有一条关于它们没有名称或ID的消息.
原文链接:https://www.f2er.com/spring/432815.html我检查了文件,他们都有一个id.那是什么?我检查XML命名空间并看到:
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
并注意到它已经过时了(我正在使用Spring 3.0.2)并将其更改为:
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
一旦我改变它,Spring立即就错误定义的bean(但从未明显使用过)抛出了六个错误.一旦我修复了这些错误,一切都工作了.我已经通过整个系统检查Spring XML文件命名空间版本.
感谢大家的帮助.不敢相信我浪费了一天这个愚蠢!