0

我有两个独立的项目。一个是maven,spring webservices(假设这是项目A),另一个是maven批处理项目(我们称之为B)。我正在尝试将 B 中的一个类(比如说“batch.java”类)注入 A 的一个类(我们称之为“api.java”)中。一个主要的问题陈述是 B 依赖于 A(在不同的A类,不在api.java上)。我相信这会导致启动时出现循环加载错误。

我将在此处粘贴我的代码,并请求提供解决方案:file: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)

4

1 回答 1

0

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

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

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

  • common-context.xml(包含在所有子上下文中使用的所有 bean 定义)
  • a-context.xml(包括common-context.xml
  • b-context.xml(包括common-context.xml
于 2016-03-10T12:16:02.807 回答