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, @RestController | Beanの管理・登録 |
| DI(依存性注入) | @Autowired, @Qualifier, @Primary | 依存関係を自動注入 |
| 設定・プロパティ管理 | @Value, @Configuration, @ConfigurationProperties | 設定値を管理 |
| データアクセス(JPA) | @Entity, @Table, @Id, @GeneratedValue, @Column, @Repository | データベース関連 |
| トランザクション管理 | @Transactional | トランザクション制御 |
| リクエスト処理 | @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @RequestMapping, @RequestParam, @PathVariable | REST 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 | データアクセスを担当するクラス |
@Controller | MVCのController層 |
@RestController | REST 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というパスのリクエストを処理@GetMapping→GET /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メソッド |
|---|---|
@GetMapping | GET(データ取得) |
@PostMapping | POST(データ登録) |
@PutMapping | PUT(データ更新) |
@DeleteMapping | DELETE(データ削除) |
@RequestMapping | 任意のHTTPメソッド |
① @GetMapping の例
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
→ GET /hello で "Hello, World!" を返す。
7. データベース関連(JPA)のアノテーション
Spring Data JPAを使うと、データベース操作が簡単になります。
| アノテーション | 用途 |
|---|---|
@Entity | JPAのエンティティクラス |
@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年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。