Categories: SpringBoot

【Spring Boot】アノテーション(メモ)

Webアプリ開発

アノテーション       説明
@Controller HTMLページを返すときに使用する。
@RequestMapping クライアントからのリクエストに対してメソッドやハンドラをマッピングする。次の5種類のリクエストを受け取れる(GET、POST、PUT、DELETE、PATCH)
@RequestParam リクエストの値をメソッド引数にバインドする。
@PathVariable URLテンプレート変数の値をメソッド引数にバインドする。
@RequiredArgsConstructor コンストラクタを自動生成する。finalフィールドのみ値がセットされる。
@GetMapping HTTPのGETリクエストを受け付ける。
@PostMapping HTTPのPOSTリクエストを受け付ける。
@AutoWired コントローラクラス起動時に発動する。
コンストラクタインジェクションという手法が推奨されている。コンストラクタが1つしかない場合は記述を省略できる。
@Data Lombokの@Dataアノテーション。Getter、Setter、toStringなどの定型コードの自動生成を行う。

DB&SQL

アノテーション       説明
@Entity DBのテーブルのレコードを表すJavaのクラスをエンティティクラスという。
@Table エンティティに対応付けるDBのテーブル名を指す。
@Id テーブルの主キーを表す。複数のフィールドにこのアノテーションを付与すると複合主キーになる。
@GeneratedValue @Idと組み合わせて使う。主キーが自動採番されることを表す。
@Column Javaのフィールドと、テーブルのカラムを対応付ける。フィールド名とカラム名が同一の場合は省略可能
@Repository マーカーインターフェース。このアノテーションを付与したインターフェースがリポジトリであること示す。

@Tableの使い方

以下のように記述するとJavaのPersonクラスとDBのpersonテーブルを対応付けることを意味する。

@Table(name=person)
public class Person{
}

@Columnの使い方

以下のように記述するとJavaのageフィールドとテーブルのAge列を対応付けることを意味する。

@Column(name=Age)
private String age;

@Repositoryの使い方

以下のようなエンティティクラスがあった場合、

@Entity
@Table(name=person)
public class Person{
    @Id
    @GeneratedValue
    private long id;
}

リポジトリクラスは次のようになる。

public interface  PersonRepository extends JpaRepository<Person,Long>{
}
  • interfaceにJpaRepositoryを継承させる
  • リポジトリクラスのクラス名は慣習的に「エンティティクラス名+Repository」とすることが多い。
  • JpaRepository<Person,Long>の部分は<エンティティクラス名,@Idを付与したフィールドのクラス名>

REST API開発

アノテーション       説明
@RestController JSONやXML、文字列などを返すWebAPI用のController
@Operation HTTPメソッドの処理内容の説明を記述する

Spring Secrity

アノテーション       説明
@EnableWebSecurity Spring Secrityを有効にする。
セキュリティの設定にはconfigure(HttpSecurity http)configure(AuthenticationManagerBuilder auth)の設定が必要。
前者はhttpリクエストのために設定で、後者はユーザのための設定。
issiki_wp