0

私は2つの別々のプロジェクトを持っています。1 つは Maven、Spring WebServices (これをプロジェクト A としましょう) で、もう 1 つは Maven バッチ プロジェクト (B と呼びましょう) です。B からクラス (クラス "batch.java" としましょう) を A のクラス ("api.java" と呼びましょう) に挿入しようとしています。1 つの主要な問題のステートメントは、B が A( 上のapi.javaではなく、Aの異なるクラスです。そして、これが起動時に循環ロードエラーを引き起こしていると思います。

ここにコードを貼り付けます。解決策を提供してください: 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 を開始しようとすると、次のエラーが発生します: : クラスパスリソース [A.xml]; ネストされた例外は org.springframework.beans.factory.parsing.BeanDefinitionParsingException: 構成の問題: URL の場所から Bean 定義をインポートできませんでした [classpath:A.xml] 問題のあるリソース: クラスパス リソース [B.xml]; ネストされた例外は org.springframework.beans.factory.BeanDefinitionStoreException: Detected cyclic loading of class path resource [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 に答える