java - 从 WAR 中的其他 Maven 模块导入 Spring bean?

标签 java spring servlets jar javabeans

我有一个新的 Web 应用程序,它作为多模块 Maven 项目的一部分打包为 WAR。此 WAR 的 applicationContext.xml 引用从“service”模块导入的 beans,后者又从“dao”模块导入 beans。 applicationContext.xml 中的导入语句如下所示:

<import resource="classpath*:service.xml" />

service.xml 文件中的内容如下所示:

<import resource="classpath*:dao.xml" />

Spring STS 和 Eclipse 都没有在我的 bean 文件中显示任何警告或错误。我到处都引用了进口 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。

我检查了文件,它们都有一个 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 文件命名空间版本。

感谢大家的帮助。不敢相信我在这种愚蠢的事情上浪费了一天!!

关于java - 从 WAR 中的其他 Maven 模块导入 Spring bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3781755/

相关文章:

Java 计算器抛出 - 二元运算符的错误操作数类型 '-' -

java - 在 Java 中绘制密集的 3D 点云(或网格)

java - 使用带有参数列表的 ProcessBuilder 作为单个字符串

java - 我如何使用 ldap 和 spring security 获取登录用户的电子邮件

java - Spring构造函数注入(inject)错误

java - 如何使用 servlet 响应打开新选项卡?

java - 在 java (JSP) 中提取 .tar.gz 文件

java - Spring 4 中的 ObjectToJsonTransformer 在具有 null 值时抛出 NPE

java - spring mvc转发到jsp

java - Tomcat 目录,用于在重新启动和重新部署时保存信息