私はAutowiringに関する質問があります。最初にシナリオを説明しましょう。コンテナに複数のインスタンスがある場合のためにAutowiredインスタンスを作成する背後にあるロジック
私は3つのプロジェクトを持っています。 ProjectA
,ProjectB
,ProjectC
。 ProjectA
は、pom.xmlを通じてProjectB
とProjectC
の依存関係を持っています。 私は財産持っているProjectA
でクラスTest.java
を持っている:
@Autowired JdbcTemplate jdbcTemplateを。
ProjectB
とProjectC
それぞれのコンテキストxmlファイル内の各持つ次のエントリ :
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
今、私の質問があり、JdbcTemplate
インスタンス述べAutowiredのproeprty上記のどのプロジェクト(?ProjectBのかProjectC)のを参照してくださいだろうか? つまり、そのインスタンスを作成するロジックに基づいていますか?
私のアプリケーションでは、 'ProjectB'と' ProjectC'はライブラリではありません。これらは 'ProjectA'のようなプロジェクトです。そのため、これらのプロジェクトは独自のコンテキストxml – Rehman
を持っていますが、ProjectAのライブラリとして機能し、DIコンテナの設定に影響を与えるべきではありません。もし、ProjectAが独自のcontext.xml設定を持っておらず、Springがクラスパスから(デフォルトで)1つを選択していれば、ProjectAのcoonfigurationは間違っていると言えます。 (クラスパス内のライブラリの順序によっては、ある時点で変更されることになります)。純粋なライブラリを作成し、すべてのアプリケーションをライブラリ(他のアプリケーションからではなく)に依存させるか、ProjectAに独自の設定を提供してください。 –