Spring Framework

アノテーション @Autowired

@Autowired は、Spring Framework(Spring Bootを含む)で依存関係を自動的に注入するためのアノテーションです。つまり、クラス内のフィールドやコンストラクタ、メソッドに別のオブジェクト(Bean)を自動的に割り当てて、手動でインスタンスを生成せずに必要なオブジェクトを利用できるようにします。

@Autowiredの基本的な使い方と意味

@Autowiredを使用すると、以下のようにして、クラス内で他のオブジェクトを簡単に利用できるようになります。Springがそのクラスを初期化する際に、必要な依存関係(Bean)を自動でインスタンス化し、指定されたフィールドやメソッドに注入します。

1. フィールドに@Autowiredを付ける

フィールドに直接依存関係を注入する方法です。

@Component
public class MyService {

    @Autowired
    private SomeDependency dependency;

    // MyService内でdependencyを使用できる
}

2. コンストラクタに@Autowiredを付ける

コンストラクタインジェクションは、依存関係を注入する推奨方法のひとつです。コンストラクタが1つだけの場合、@Autowiredは省略可能です。

@Component
public class MyService {

    private final SomeDependency dependency;

    @Autowired
    public MyService(SomeDependency dependency) {
        this.dependency = dependency;
    }
}

3. メソッドに@Autowiredを付ける

Setterメソッドに@Autowiredをつけて注入する方法です。

@Component
public class MyService {

    private SomeDependency dependency;

    @Autowired
    public void setDependency(SomeDependency dependency) {
        this.dependency = dependency;
    }
}

@Autowiredの役割

  • 依存関係の自動注入: @Autowiredが付いたフィールドやメソッドには、Springが適切なBeanを自動的に注入します。
  • コンストラクタ、フィールド、メソッドレベルでの柔軟な利用: コンストラクタ、フィールド、メソッドのいずれにも利用できるため、依存関係の注入方法を柔軟に選択できます。
  • リファクタリングが容易: Springが依存関係を管理するため、アプリケーション全体の依存関係の変更が発生しても、コードの変更が最小限で済むことが多いです。

@Autowiredが機能する条件

  • Springがクラスやインターフェースを管理していることが前提です。そのため、@Component, @Service, @Repository, @Controller などのSpringアノテーションがクラスについている必要があります。

@Autowiredを使うことで、クラスが依存する別のオブジェクトの生成や管理をSpringに任せられるので、コードの可読性やメンテナンス性が向上します。

スポンサーリンク
タイトルとURLをコピーしました