2016-07-01 7 views
-1

私はAutowiringに関する質問があります。最初にシナリオを説明しましょう。コンテナに複数のインスタンスがある場合のためにAutowiredインスタンスを作成する背後にあるロジック

私は3つのプロジェクトを持っています。 ProjectA,ProjectB,ProjectCProjectAは、pom.xmlを通じてProjectBProjectCの依存関係を持っています。 私は財産持っているProjectAでクラスTest.javaを持っている:

@Autowired JdbcTemplate jdbcTemplateを。

ProjectBProjectCそれぞれのコンテキストxmlファイル内の各持つ次のエントリ :

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
     <property name="dataSource" ref="dataSource" /> 
    </bean> 

今、私の質問があり、JdbcTemplateインスタンス述べAutowiredのproeprty上記のどのプロジェクト(?ProjectBのかProjectC)のを参照してくださいだろうか? つまり、そのインスタンスを作成するロジックに基づいていますか?

答えて

0

私は物事を少し簡素化します。 ProjectAApplicationProjectBProjectClibrariesとします。

通常、ライブラリにはcontext.xmlや他のスプリング設定がある必要はありません。それは、独自のDIコンテナを持たないためです(使用するアプリケーション)。したがって、アプリケーションはDIコンテナの構成を持ち、アプリケーションの構成によって依存関係をインスタンス化する方法が決まります。

ライブラリーにいくつかのスプリング構成が含まれていても、これは当てはまります。これは無視する必要があります。

+0

私のアプリケーションでは、 'ProjectB'と' ProjectC'はライブラリではありません。これらは 'ProjectA'のようなプロジェクトです。そのため、これらのプロジェクトは独自のコンテキストxml – Rehman

+0

を持っていますが、ProjectAのライブラリとして機能し、DIコンテナの設定に影響を与えるべきではありません。もし、ProjectAが独自のcontext.xml設定を持っておらず、Springがクラスパスから(デフォルトで)1つを選択していれば、ProjectAのcoonfigurationは間違っていると言えます。 (クラスパス内のライブラリの順序によっては、ある時点で変更されることになります)。純粋なライブラリを作成し、すべてのアプリケーションをライブラリ(他のアプリケーションからではなく)に依存させるか、ProjectAに独自の設定を提供してください。 –

関連する問題