Spring MVC
とPortlets
については、いくつかの投稿でフィールド注入をお勧めしません。私は私がフィールド注入を使用していると私はそれに答えることができないので、私は自分自身を求めているので、私は取得しようとしています。私はそれを理解として、あなたはこのような@Autowired
を持つ属性へBean
を注入した場合フィールド注入は次のとおりです。フィールドインジェクションとは何か、それを避ける方法は?
CartController.java:
...
@Autowired
private Cart cart;
...
BookshopConfiguartion.java:
@Configuration
public class BookShopConfiguration {
@Bean
public Cart cart(){
return new Cart();
}
//more configuration
私のCart.java
は、カート内の本。私の研究の間に
私はおよそコンストラクタ・インジェクションをお読みください。
MyComponent.java:
...
public class MyComponent{
private Cart cart;
@Autowired
public MyComponent(Cart cart){
this.cart = cart;
}
...
利点と注射のこれらのタイプの両方の欠点は何ですか?
EDIT 1:この質問は、私はそれをチェックしthis questionの重複としてマークされています。私が正しいと思っているのであれば、質問にも答えにも、私には分からないコード例はありません。
世界に伝えるのは良い考えではなく一般的ではありません。 "フィールド注入は避けるべきです"。賛否両論を表示し、自分に決断を下す;)多くの人々は、他の経験や物事を見る方法を持っています。 – dit
ここにあるかもしれませんが、コミュニティが何かを落胆させるための一般的なコンセンサスになった他のケースがあります。たとえば、ハンガリー表記を考えてみましょう。 – Jannik
あなたはテスト容易性と依存性の可視性としていくつかの良い点を挙げていますが、私はすべてに同意していません。コンストラクタインジェクションに欠点はありませんか?コールの実際の構成を実行するクラスに注入するために5つまたは6つのフィールドを有することが望ましいことがある。私は不変性を持ってあなたにも同意しない。最終フィールドを持つことは、クラスを不変にすることを強制するものではありません。それが望ましい。これは非常に異なっています。 – davidxxx