【问题标题】:How to resolve "cyclic loading of class path resource"?如何解决“类路径资源的循环加载”?
【发布时间】:2016-06-25 02:22:30
【问题描述】:

我有两个独立的项目。一个是maven,spring webservices(假设这是项目A),另一个是maven批处理项目(我们称之为B)。 我正在尝试将 B 中的一个类(比如说“batch.java”类)注入到 A 的一个类(我们称之为“api.java”)中。 一个主要的问题陈述是 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)

【问题讨论】:

    标签: spring maven spring-web


    【解决方案1】:

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

    将所有常用的 bean 定义放到一个单独的上下文中,并在您的子上下文中引用这个上下文。

    那么你应该至少得到 3 个 context.xml —— 例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多