Spring Bootのアノテーションの一覧です。
間違い等あればご指摘ください。
@SpringBoot
メインメソッドを含んだクラスに付与すると「SpringBootアプリケーション」と認識される
@Controller
SpringMVCで、アプリケーション層のコントローラーに付与 Javaクラスに付与すると、このクラスはコントローラーと認識してくれる。 thymeleafを使用したHTMLをレスポンスするときに使用@RestController
jsonやxmlをレスポンスするときに使用 RestAPI、もしくはRestfulAPIを呼び出す時はReact.jsなどのFEから呼び出す必要があるDependency Injection
@Autowired
依存性の注入 インスタンス生成するクラスに付与@Component
@Controller・@Service・@Repogitory・@RestController・@Configration・@RestControllerAdviceの用途以外のインスタンス生成対象のクラスに付与@ComponentScan
別パッケージのコンポーネントを使用するときに付与 @Componentや@Serviceなどを付与してもインポートできない場合に使う@Service
ドメイン層の「業務処理」に付与。業務ロジックを@Serviceクラスに書く 業務処理系のクラスを@Autowiredしたい場合に書く。@Repogitory
インフラストラクチャ層のデータベースアクセス処理に付与 @Serviceと同じく@Autowiredしたい場合に書く。 ORMがDataJPAの時は不要。通信形式(GET POST PUT DELETE)
@GetMapping
- URLに入力フォームのラベル及び、値が付く通信形式で、メソッドとマッピングさせる
- DBからデータを取得する通信形式
@PostMapping
URLに入力フォームのラベル及び、値が付かない通信形式で、メソッドとマッピングさせる@RequestMapping
URLとクラスやメソッドとマッピングさせる。 GETやPOSTなどの通信形式も指定できる
属性 | 説明 |
value | URLを指定 |
method | method=RequestMethod.POSTなど |
属性 | 説明 |
---|---|
name value | この二つは同じ |
required | パラメーターはデフォルトでは必須のため、パラメーター指定を任意にする場合、falseを指定 |
defaultValue | リクエストで値を受け取るか、判らない場合に付与 |
Lombok
@Data
セッター・ゲッターメソッドが自動生成されるほか、toStringなど、オブジェクトクラスに定義されているメソッドを自動生成@NoArgsConstructor
引数のないコンストラクタが自動生成される@AllArgsConstructor
全てのメンバ変数を引数としたコンストラクタが生成されるモデル
@Model
主にViewに値を渡すときに使用@ModelAttribute
formの入力項目(name属性)と一致するフィールドに値が設定される インスタンス化される このアノテーションを使うとmodel.addAttribute();は不要になるセッション
@SessionAttribute
Spring Sessionという名称でクラスに設定すると、入力フォームの値が保持される。 使用する際はインスタンス生成するメソッドを作成。入力内容の検証
@Valid
単一入力チェックをする際に用いる@Validated
フィールドの検証順序を制御したり、複数の検証をまとめたりする機能がある。 @Validより扱いが機能が多い分、難しいORM
@table
DataJPA使用時に利用可能 引数に任意の名前を渡すことでテーブル名を指定することができて省略も可能。その場合はクラス名がテーブル名となる。@Entity
エンティティクラスに使用 DBに登録するデータの変数などを定義 Data JPAの時に使用@Mapper
MyBatisを利用する場合に使用可能。 @Mapperを利用する場合はMavenの場合、pom.xmlに依存関係を記述 @Mapperの役割はxmlファイルに記述しているインターフェース内のSQLを実行するためのメソッドを動かす@MapperScan
@Mapperアノテーションが記述されているクラスのパスを設定してコントローラークラスに認識させる。
@Mapperだけ記述してエラーになるようなら@MapperScanを用いるか、xmlファイルの内容を見直すかになる。
@IdClass(mainPrimaryKey.class)
正規化されていないDBでエンティティクラスに付与するもの
テーブルで複数主キーを設定していれば必要になるクラスで、主キーの数だけフィールドを定義する
@IdClassを付与したクラスは上記クラスのフィールドを持つ必要がある
あとは自由にフィールドを定義できる
@Builder
特定のクラスをインスタンス化するときに使用する技術で、オブジェクトの生成過程を抽象化し、動的なオブジェクト生成が可能
複数のコンストラクタを設定しなくても、様々なフィールドを持ったオブジェクトを柔軟に定義でき、引数の挿入順序を自由に設定できる
その他
@EqualsAndHashCode Objectクラスのequals()メソッドとHashcode()メソッドを自動生成属性
callSuper=(true false) メソッドを自動生成し、親クラスのフィールドまでをカバーするか設定