2つのモジュールがあるとしましょう。1つはコアで、もう1つはコアに依存する実装モジュールです。Coreは、その依存実装モジュールwarのjarファイルです。
コアには、次のように定義されたBeanがあります
<bean id="x" class="com.pokuri.X">
<property name="y" ref="y"/>
<property name="z" ref="z"/>
</bean>
そして、そのクラスには次のようなメソッドがあります
public class X{
public void doSomeJob(){
.......
}
}
このメソッドは、いくつかのコアクラスから呼び出されています。次に、コアに依存する実装に従って、XのdoSomeJob()メソッドのロジックを変更する必要があります。だから、私はこのようなクラスを作成します
public class ExtX extends X{
@override
public void doSomeJob(){
// changed logic
}
}
このような別のアプリケーションコンテキストxmlファイルで同じIDのBeanを定義しました。
<bean id="x" class="com.pokuri.ExtX">
<property name="y" ref="y"/>
<property name="z" ref="z"/>
</bean>
値をとして指定するcontextConfigLocation
際にコンテキストパラメータを使用してアプリケーションコンテキストを構築しています。web.xml
classpath:springfolder
しかし、コアロジックでは、コアBeanインスタンスのみ(つまりX
インスタンス)を取得していExtX
ます。そのBean定義をオーバーライドして、システムに新しい拡張Bean定義の使用を開始させるにはどうすればよいですか?
また、異なるアプリケーションコンテキストファイルで同じIDを使用すると、最初にロードされたBean定義が後でロードされたBean定義で上書きされると聞きました。priority
同じIDのBeanが見つかった場合に、ApplicationContextが優先度の高いものを使用して優先度の低いものよりも考慮できるようにするBean定義の属性はありますか。