私はこれに慣れている問題がありますbean override同じIDの豆を避けるには?
2豆は同じIDでありますが、そのパッケージは異なります。 ビーンAはビーンBによってオーバーライドされました。 私は原因を見つけるのに多くの時間を費やしました。
だから私はこの事件を防止したい。私の要求は、春が例外をスローし、このような場合に初期化のプロセスをシャットダウンすることです。
私はこれに慣れている問題がありますbean override同じIDの豆を避けるには?
2豆は同じIDでありますが、そのパッケージは異なります。 ビーンAはビーンBによってオーバーライドされました。 私は原因を見つけるのに多くの時間を費やしました。
だから私はこの事件を防止したい。私の要求は、春が例外をスローし、このような場合に初期化のプロセスをシャットダウンすることです。
@Inject
(@Autowire
)はidでなくタイプで入力できます。 Autowiring collaboratorsを読んでください。
Springは、同じIDを持つ2つのBeanを1つのコンテキストで持つことはできません。だから解決策は明らかです - 異なるIDを使用してください。
<bean id="foo" class="what.ever.foo.Class" />
<bean id="bar" class="what.ever.package1.Class" />
あなたは注釈とコンポーネント・スキャンを使用している場合:あなたはXMLコンテキストを使用している場合は、それがあるべき
@Component("foo")
@Component("bar")
アノテーションベースのコンテキストが異なるメソッド名を使用します。
@Bean
public Foo foo() {
return new Foo();
}
@Bean
public Bar bar() {
return new Bar();
}
一見すると、私はタイトルを「同じIDを持つ熊を避ける方法」と誤解しました...そして、おそらく無関係です:-) –
なぜbean nameと一緒にパッケージ名を使用しませんか? – SMA
'@修飾子'はあなたに役に立ちます.. – z21