2016-06-20 15 views
4

私はSpringフレームワーク(バージョン4.3.0を使用しています)を学び始めました。クラスに注入が必要なときにフレームワークに伝えるために@Autowiredが必要だと思っていました。Springフレームワーク4.3.0 - いつ@Autowiredが必要ですか?

しかし、私はこの今日試してみてください。

@Component 
public class CDPlayer implements MediaPlayer{ 

    private CompactDisc cd; 

    //there are no @Autowired here 
    public CDPlayer(CompactDisc cd) { 
     this.cd = cd; 
    } 

    public void play() { 
     cd.play(); 
    } 

} 

、それは自動配線構成と完全に正常に動作:

@Configuration 
@ComponentScan 
public class CDPlayerConfigAuto { 

} 

をだから私は本当に@Autowiredを使用する必要がないとき?

答えて

5

これはSpring Boot 4.3の新機能です。クラスにコンストラクタが1つしかない場合は、このコンストラクタを使用して引数をオートワイヤします。より多くのコンストラクタがある場合、またはセッターまたはフィールド注入を使用する場合は、@Autowiredアノテーションが必要です。

5

クラスにコンストラクタが1つしかない場合、これは必須ではありません。

4.3のように、このような単一コンストラクタのシナリオでは、明示的な注入 注釈を指定する必要がなくなりました。これは特にそうでなければコンテナを持たないクラスのためには エレガントである。 注釈。 (シングルコンストラクタシナリオため暗黙のコンストラクタ・インジェクション)

https://spring.io/blog/2016/03/04/core-container-refinements-in-spring-framework-4-3

:あなたがここで見ることができます

関連する問題