Spring Bootでよく使われるアノテーションの種類とその役割

こんにちは。ゆうせいです。

Spring Boot を使っていると、@RestController@Autowired などの アノテーション をよく見かけますよね?
Spring Boot ではアノテーションを使うことで、設定ファイルを書かずに多くの処理を自動化できます。

今回は、Spring Boot でよく使われるアノテーションを カテゴリ別 に整理しながら、その役割を詳しく解説していきます!


1. Spring Boot のアノテーションとは?

アノテーション(@Annotation)とは、クラスやメソッド、フィールドに メタデータ(付加情報) を与える仕組みです。
Spring Boot では、アノテーションを使うことで 設定を簡略化し、コードの可読性を向上させる ことができます。

例えば、@RestController を付けるだけで 「このクラスはREST APIを提供する」 という意味を持たせられます。


2. Spring Bootでよく使われるアノテーション一覧

Spring Boot のアノテーションを カテゴリ別 に整理すると、以下のようになります。

カテゴリアノテーション例役割
Spring Bootの起動@SpringBootApplicationアプリケーションのエントリポイント
コンポーネント管理@Component, @Service, @Repository, @Controller, @RestControllerBeanの管理・登録
DI(依存性注入)@Autowired, @Qualifier, @Primary依存関係を自動注入
設定・プロパティ管理@Value, @Configuration, @ConfigurationProperties設定値を管理
データアクセス(JPA)@Entity, @Table, @Id, @GeneratedValue, @Column, @Repositoryデータベース関連
トランザクション管理@Transactionalトランザクション制御
リクエスト処理@GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @RequestMapping, @RequestParam, @PathVariableREST APIのエンドポイント定義
バリデーション@Valid, @NotNull, @Size, @Min, @Max, @Patternフォーム入力のバリデーション
AOP(アスペクト指向プログラミング)@Aspect, @Before, @After, @Around横断的関心事(ログ、認証)を管理
非同期処理@Async, @EnableAsync非同期処理の実装
スケジュール実行@Scheduled, @EnableScheduling定期的な処理の実装

それでは、これらのアノテーションを 具体的なコード例 とともに詳しく解説していきます!


3. Spring Bootの起動に関するアノテーション

@SpringBootApplication

Spring Boot のエントリポイント(起動クラス)につけるアノテーションです。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

この @SpringBootApplication は、次の3つのアノテーションを含んでいます。

アノテーション役割
@Configuration設定クラスとして認識
@EnableAutoConfiguration自動設定を有効化
@ComponentScan@Component などのBeanをスキャン

4. コンポーネント管理のアノテーション

Spring Boot では、特定のアノテーションを付けるだけでクラスを Springコンテナの管理下(Bean) に置けます。

アノテーション用途
@Component汎用的なBean
@Serviceビジネスロジックを実装するクラス
@Repositoryデータアクセスを担当するクラス
@ControllerMVCのController層
@RestControllerREST API用のController

@RestController の使用例

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/users")
public class UserController {
    @GetMapping
    public String getUsers() {
        return "ユーザー一覧を返す";
    }
}

  • @RestController → REST API を提供するクラス
  • @RequestMapping("/users")/users というパスのリクエストを処理
  • @GetMappingGET /users のリクエストを処理

5. 依存性注入(DI)のアノテーション

@Autowired

Spring のDI(依存性注入)を実現するアノテーション。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void getUser() {
        userRepository.findUser();
    }
}


6. REST APIのアノテーション

Spring Boot では、アノテーションを使ってREST APIのエンドポイントを簡単に作成できます。

アノテーションHTTPメソッド
@GetMappingGET(データ取得)
@PostMappingPOST(データ登録)
@PutMappingPUT(データ更新)
@DeleteMappingDELETE(データ削除)
@RequestMapping任意のHTTPメソッド

@GetMapping の例

@GetMapping("/hello")
public String hello() {
    return "Hello, World!";
}

GET /hello"Hello, World!" を返す。


7. データベース関連(JPA)のアノテーション

Spring Data JPAを使うと、データベース操作が簡単になります。

アノテーション用途
@EntityJPAのエンティティクラス
@Table(name = "users")データベースのテーブル名を指定
@Id主キー(PK)を指定
@GeneratedValue主キーの自動採番
@Column(name = "email")カラム名を指定

① JPAエンティティの例

import jakarta.persistence.*;

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String name;

    // ゲッター・セッター省略
}


まとめ

Spring Boot のアノテーションは、設定をシンプルにし、開発を効率化します。
基本的なアノテーションを理解し、実際のプロジェクトで活用できるようにしましょう!

次は 「Springのスコープ」や「AOP(アスペクト指向プログラミング)」 について学ぶと、さらに理解が深まりますよ!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。