如何解决"循环加载类路径资源"?

时间:2016-03-10 09:58:27

标签: spring maven spring-web

我有两个独立的项目。一个是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)

1 个答案:

答案 0 :(得分:0)

不幸的是,你需要打破循环依赖。

将所有常用的bean定义放入单独的上下文中,并在子上下文中引用此上下文。

然后你最终应该至少有3个context.xml&#39; s - 例如:

  • common-context.xml(包含在所有子上下文中使用的所有bean定义)
  • a-context.xml(包括common-context.xml
  • b-context.xml(包括common-context.xml