2017-02-18 1 views
0

あらかじめ定義されたSpring Framework Beanの名前を独自の目的で使用できますか?あらかじめ定義されたSpring Framework Beanの名前を独自の目的で使用できますか?

すでに使用されている名前で自分のbeanを定義するのと同じですか?開発中に私は既存の名前を知りませんし、衝突の可能性について心配しています。あなたを自分でチェックすること

error 
mvcValidator 
viewResolver 
counterService 
serverProperties 

ConfigurableApplicationContext ctx = SpringApplication.run(App.class); 
Arrays.stream(ctx.getBeanDefinitionNames()).forEach(name -> System.out.println(name)); 
+1

他のBeanをオーバーライド/置き換えても影響はありません。 –

+0

あらかじめ定義されたBean名を誤って壊す可能性はありますか? – gavenkoa

答えて

1

Beanが作成されている場合、および

のように、割り当てられた「汎用」の名前の多くがされているが、空の春のブートアプリケーションと

同じ名前のBeanがすでに存在する場合、新しいBeanは既存のBeanを上書きします。

これは、独自の豆を使用して春のデフォルト豆を置き換えることができるので便利ですが、間違って春のデフォルト豆の機能を破ることができます。

この動作は、falseに設定すると、上書きではなく、例外がスローされます、許可されていません

org.springframework.beans.factory.support.DefaultListableBeanFactory#setAllowBeanDefinitionOverriding

を使用して変更することができます。どのようにこれを行うことができることは、スプリングは、既存のBeanをオーバーライドする場合、あなたはとてもその注意すべき何かが、実際には、そのことは大きな

DefaultListableBeanFactory  : Overriding bean definition for bean 'viewResolver' with a different definition: 

のようなログの何かに表示されます this post

に答えています問題。

関連する問題