Spring Boot アノテーション集
最初にこのくらい知ってたら良かった…と思うSpring Bootのよく使うアノテーションのまとめ。
詳細は省いてあるので、公式のJavaDocを読むこと。
全体的に使われるもの
- @Autowired
- Dependency Injectionのために使う。必修。
- ただし最近はコンストラクタインジェクションが推奨されている。
- @Bean
- クラスのインスタンス生成に使用するメソッドを対応付けるためのもの。
- @Autowiredでインスタンスを生成するとき、このメソッドが使われる。
- 下手に使うとAuto Configurationが作動しなくなり、不具合の原因になるので注意。
クラスに付けるもの
- @Component
- Dependency Injectionして使いたいクラスに付与する。
- @Configuration
- SpringだとXMLで書くような設定をソースで書く場合、クラスに付与する。
サービスクラスに使うもの
- @Service
- サービスクラスに付与する。現時点では、@Componentとほぼ同じ役割と思ってよい。
- @Transactional
- トランザクション境界を定義するために使う。
- どこでも使うことはできるが、制約や分かりやすさ等の面から、サービスクラスにつけると良い。
コントローラクラスに使うもの
- @RestController
- APIのコントローラに付与する。
- このコントローラでは、戻り値をStringにしたものがそのままクライアントへのレスポンスとなる。
- @Controller
- ページ(UI)を持つコントローラに付与する。
- このコントローラでは戻り値のStringに対応するテンプレートを、Thymeleafでレンダリングしたものがレスポンスとなる。
- @Responsebody
- @Controllerでも、これをメソッドに付けると戻り値がそのまま返る。デバッグ時に便利。
- @RequestMapping, @GetMapping, @PostMapping
- URLに対するHTTPリクエストを、メソッドに対応付けるために付与する。
- @ModelAttribute
- メソッドの戻り値を、Thymeleafで使用する変数へ対応付ける。
リポジトリクラスに使うもの
- @Repository
- DBアクセスを行う、DAOの役割を担うクラスへ付与する
エンティティクラスに使うもの
- @Entity, @Table, @Id, @OneToMany, @ManyToOne, @OneToOne, @ManyToManyなど
- 厳密にはSpringのアノテーションではないが、Spring Data JPAを使うなら必修。
- これらを使ってテーブルを設計する。
知っていると便利なもの
- @ConfigurationProperties
- application.propertiesに独自の値を定義できる。
- @EnableScheduling, @Scheduled
- Linuxのcronのような書式で、スケジューリングされたメソッド実行を実装できる。
- @EnableRetry, @Retryable
- エラーのリトライ処理を実装できる。
バリデーション関係
- @Validated
- これを付けておくと自動的にバリデーションしてくれる。
- URLパラメータや、@ConfigurationPropertiesで定義したフィールドをバリデーションする。
- @Min, @Max, @Size, @Pattern, @Nullなど
- フォームなどをバリデーションの際にチェックする内容を指定する。数値の最小値・最大値や、文字列のサイズ、マッチする正規表現など。
- TERASOLUNAのガイドラインによくまとまっている。