アノテーションとは?
アノテーション は、クラスやメソッド、フィールドなどに付与して「このクラスはこう扱ってね」「このメソッドにはこういう役割がある」といった設定や意味付けを行う仕組みです。
Rails が「規約」で自動的にやってくれる部分を、Spring では「アノテーション」で明示するイメージです。
Spring Boot でよく使うアノテーションまとめ
アプリケーション全体
- @SpringBootApplication
- 起動クラスにつける
以下の3つをまとめた便利アノテーションです。
- @Configuration … 設定クラスである
- @EnableAutoConfiguration … Spring Boot の自動設定を有効にする
- @ComponentScan … Bean を自動スキャンする(同じパッケージ配下が対象)
Web層 (Controller)
- @Controller
- Thymeleaf などのテンプレートを返すクラスにつける
- @RestController
- JSONや文字列を直接返すAPI用
- @RequestMapping / @GetMapping / @PostMapping
- HTTPリクエストとメソッドを結びつける
- @PathVariable
- URL の一部を変数として取得
- @RequestParam
- クエリパラメータを取得
- @ModelAttribute
- フォーム入力をオブジェクトにバインド
サービス層
- @Service
- ビジネスロジックを持つクラスにつける
リポジトリ層
- @Repository
- DBアクセスクラスにつける
エンティティ層
- @Entity
- DBテーブルと対応するクラスにつける
@Id(主キー)や @GeneratedValue(自動採番)とセットで使う
DI(依存性注入)
- @Autowired
- Bean を自動的に注入する
ただし現在は コンストラクタインジェクション推奨
設定関連
- @Configuration
- 設定クラスにつける
Bean とは
Spring が管理するインスタンス(オブジェクト)のこと
Java で作ったクラスのオブジェクトをSpring コンテナ(IoCコンテナ / ApplicationContext) が生成・管理します。
Spring が自動的に Bean として登録してくれる。
その後、必要な場所に @Autowired(またはコンストラクタ注入)で渡してくれる。