4

私の(Mavenベースの)プロジェクトは、いくつかのモジュールから構築されています。基本的に、Core モジュールと、それを利用してさまざまなサービスを外部に提供するいくつかのモジュールがあります。これらのモジュール間の「接着剤」は「親」モジュールです。「親」モジュールは、コードを保持することは想定されていません。このようなもの:ここに画像の説明を入力

私がやりたいことは、Spring IoC を使用して、Core パーツを Service パーツに注入/自動配線することです。しかし、それを構成する方法が見つからないようです。または、少なくとも、サービス パーツ内で冗長な IoC 構成を回避する方法を見つけることができないようです。

より具体的には、Spring ドキュメントの例を使用して、それがサービス モジュールの 1 つの構成であると仮定しますexample.SimpleMovieCatalog。「兄弟」の 1 つに注入する機能を失うことなく、構成部分をコア モジュールに移動するにはどうすればよいでしょうか。 「モジュール?

  <?xml version="1.0" encoding="UTF-8"?>
  <beans...>
    <context:annotation-config/>
    <bean class="example.SimpleMovieCatalog">
        <qualifier value="main"/>
    </bean>
    <bean class="example.SimpleMovieCatalog">
        <qualifier value="action"/>
    </bean>
    <bean id="movieRecommender" class="example.MovieRecommender"/>
  </beans>
4

1 に答える 1

5

私はついに今のところうまくいくように見える方法を見つけました:

  1. 各モジュールは、スプリング構成を保持します/META-INF/spring-<module>.xml
  2. 各モジュールは、コードを独自のパッケージ内に保持する必要があります。そうしないと、context:component-scanが正しく機能しません。
  3. 他のモジュールに依存するすべてのモジュールは、アプリケーションコンテキストの「configLocations」を介して外部モジュール構成をロードする必要があります。外部モジュール構成はsthで参照する必要があります。「classpath*:META-INF/spring-core.xml」のように

いくつかの意見

  • 「クラスパス*:」は魔法のようなものです-埋め込まれたjarファイル内から他のリソースを含めることができるためです
  • このソリューションにはまだ1つの欠点があります。私のIDE(Intellij IDEA)は相互参照されたBeanを解決できません。これは、コンテキストを介して直接spring-core.xmlをロードする「ハック」が原因で発生します。残念ながら、これまでのところ他の方法は見つかりませんでした:(
  • 私にとってかなりの苦痛を引き起こしたもう一つのことは、sthを使用することでした。like<import resource="classpath*:META-INF/spring-core.xml" />は私のIDEで理解されていますが、望ましい結果がまったく得られません(例:context:component-scan構成の中断)
于 2012-09-06T14:01:21.813 に答える