如何解决"cyclic loading of class path resource"?
How to resolve "cyclic loading of class path resource"?
我有两个独立的项目。一个是 maven,spring webservices(假设这是项目 A),另一个是 maven 批处理项目(我们称之为 B)。
我正在尝试将 B 的 class(比方说 class "batch.java")注入到 A 的 class(我们称之为 "api.java")中。
一个主要的问题陈述是 B 依赖于 A(依赖于 A 的不同 class,而不是依赖于 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 位置 [class 路径:B.xml] 导入 bean 定义
违规资源:class路径资源[A.xml];嵌套异常是 org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:无法从 URL 位置导入 bean 定义 [classpath:A.xml]
违规资源:class路径资源[B.xml];嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException:检测到循环加载 class 路径资源 [A.xml] - 检查您的导入定义!
org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
不幸的是你需要打破循环依赖。
将所有常用的 bean 定义放入单独的上下文中,并在您的子上下文中引用此上下文。
那么你应该至少得到 3 context.xml - 例如:
common-context.xml
(包含在所有子上下文中使用的所有 bean 定义)
a-context.xml
(包括common-context.xml
)
b-context.xml
(包括common-context.xml
)
我有两个独立的项目。一个是 maven,spring webservices(假设这是项目 A),另一个是 maven 批处理项目(我们称之为 B)。 我正在尝试将 B 的 class(比方说 class "batch.java")注入到 A 的 class(我们称之为 "api.java")中。 一个主要的问题陈述是 B 依赖于 A(依赖于 A 的不同 class,而不是依赖于 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 位置 [class 路径:B.xml] 导入 bean 定义 违规资源:class路径资源[A.xml];嵌套异常是 org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:无法从 URL 位置导入 bean 定义 [classpath:A.xml] 违规资源:class路径资源[B.xml];嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException:检测到循环加载 class 路径资源 [A.xml] - 检查您的导入定义! org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
不幸的是你需要打破循环依赖。
将所有常用的 bean 定义放入单独的上下文中,并在您的子上下文中引用此上下文。
那么你应该至少得到 3 context.xml - 例如:
common-context.xml
(包含在所有子上下文中使用的所有 bean 定义)a-context.xml
(包括common-context.xml
)b-context.xml
(包括common-context.xml
)