我有两个独立的项目。一个是maven,spring webservices(让我们说这是项目A),另一个是maven批处理项目(让我们称之为B)。 我正试图从B中注入一个课程(让我们说课程" batch.java")到一个班级(让他们称之为" api.java") A. 一个主要的问题陈述是B依赖于A(在不同的A类上,而不是在api.java上)。我相信这会导致启动时出现循环加载错误。
我会将代码粘贴到此处,并请求为其提供解决方案: 文件:B.XML
<import resource="classpath:A.xml" />
<bean id="batch" class="XXX">
<!-- lookup methods from project A -->
</bean>
文件:A.XML
<import resource="classpath*:B.xml"/>
<bean id="api" scope="prototype" lazy-init="true">
<property name="batch" ref="batch" />
</bean>
代码编译正常但是当我尝试启动我的wsdl时,我收到以下错误: org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:无法从URL位置导入bean定义[classpath:B.xml] 违规资源:类路径资源[A.xml];嵌套异常是org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:无法从URL位置导入bean定义[classpath:A.xml] 违规资源:类路径资源[B.xml];嵌套异常是org.springframework.beans.factory.BeanDefinitionStoreException:检测到类路径资源的循环加载[A.xml] - 检查导入定义! org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
答案 0 :(得分:0)
不幸的是,你需要打破循环依赖。
将所有常用的bean定义放入单独的上下文中,并在子上下文中引用此上下文。
然后你最终应该至少有3个context.xml&#39; s - 例如:
common-context.xml
(包含在所有子上下文中使用的所有bean定义)a-context.xml
(包括common-context.xml
)b-context.xml
(包括common-context.xml
)