見出し画像

【Java】Springのアノテーションまとめ

Spring Frameworkを使っていて、使うアノテーションが増えてきたのでまとめ。よく使っているものだけ。詳細は後述。


@After

メソッド単位で付与する。@Acpectが付与されたクラス内で使用。
@Afterが付与されたクラスは、execution内で定義された条件に当てはまる対象の処理(メソッドなど)の実行後に@Afterのついたメソッドが実行される。特定のメソッドの開始前や開始後にその共通的な処理を実行させるAOPにおいて使用される。

@AfterThrowing

AOPにおいて例外発生時のみ実行させるメソッドに付与。

@Autowired

フィールド単位で付与する。
付与されたフィールドの型と合うBeanを自動的にDIしてくれる。型と合うBeanが複数ある場合は、@Qualifierアノテーションを使用して一意に識別させる。

@Bean

メソッド単位で付。@Configurationクラスに使用。
DataSourceやJdbcTemplateといったクラスが戻り値のメソッドに付与。

@Before

メソッド単位で付与。@Acpectが付与されたクラス内で使用する。
@Beforeが付与されたクラスは、execution内で定義された条件に当てはまる対象の処理(メソッドなど)の実行前に@Beforeのついたメソッドが実行される。特定のメソッドの開始前や開始後にその共通的な処理を実行させるAOPにおいて使用される。

@Column

データベースのテーブルの行に対応させるEntityクラス内で定義した、テーブルのカラム名に相当するメンバ変数に付与。変数のデータ型や長さを指定する。

@Component

Spirngのコンポーネントとして定義させたいクラスに付与。
付与することでApplicationContextに登録され、DI対象のクラスとなる。
(対象にしたクラスは@Autowiredで指定できるようになる。)

@Configuration

設定を記述するクラスに付与。
このクラスは@Beanを付与したメソッドで構成される事になる。

@Controller

Spring MVCのコントローラーに該当するクラスに付与。
付与することでSpirngのコンポーネントとして認識され、@Component(や@Repository、@Serviceなど)と同じくApplicationContextに登録され、DI対象のクラスとなる。
@Componentと基本的な意味合いは同じで、@Controller を付与した場合は @Component はつけない。

@Data

クラスに付与する。付与したクラスは対象クラス内のインスタンス変数に対してgetter/setterでアクセスすることが可能となる。

・@Getter
・@Setter
・@ToString
・@EqualsAndHashCode
・@RequiredArgsConstructor
これらを付与したのと同じ状態になる。

@Entity

クラスに付与。自クラスがデータの入れ物となるEntityクラスであることを示す。トップレベルのクラスである必要がある。

@GeneratedValue

主キーにユニークな値を自動で生成する方法を指定する。@Idを持つエンィティクラス、マップドスーパークラスのプライマリキーのフィールドまたはプロパティに適用する。

@Id

Entityクラス内で定義した主キーに付与する。プライマリキーのプロパティまたはフィールドであることを示す。

@Modifying

JpaRepositoryの更新系メソッドに付与する。@Queryアノテーションとセットで使う。

@PathVariable

URLに含まれた部分文字列をパラメータとして受け取るためのアノテーション。
@RequestMappingで指定するURLの一部を{}で囲み、コントローラの引数として@PathVariableのついた変数を指定することで受け取れるようになる。

@PropertySource

クラスにプロパティファイルを読み込むアノテーション。@PropertySourceは引数にプロパティファイルのパスを指定。
読み込まれたプロパティはEnvironmentクラスを@Autowiredすることでクラス内で使用できる。@Configurationクラスと併用されることが多い。

@Repository

DBとのやり取りを行うDAOクラスに付与するアノテーション。@Component(や@Controller、@Serviceなど)と同じく、付与することでSpirngのコンポーネントとして認識され、ApplicationContextに登録されてDI対象のクラスとなる。

@RequestBody

クライアントから送られてくるボディの値を受け取るためのアノテーション。コントローラのメソッドの引数として指定。

@RequestMapping

メソッドに対してクライアントからリクエストのあったURLをマッピングさせる。

@ResponseBody

Controllerクラスのメソッド単位で付与。戻り値をjson形式で返却することを意味する。@ResponseBodyを使う場合は@ResponseBodyは不要になる。

@RestController

@Controller & @ResponseBody と同義。

@Service

ビジネスロジックを記述するクラスに付与。ビジネスロジックはMVCモデルにおいてはMに当たるクラス。
@Component(や@Controllerや@Repositoryなど)と同じく、付与することでSpirngのコンポーネントとして認識され、ApplicationContextに登録されてDI対象のクラスとなる。

@SpringBootApplication

自身がSpring Bootアプリケーションであることを示すためにクラスに付与。

・@Configuration
・@EnableAutoConfiguration
・@ComponentScan 
これらを付与したのと同じ状態になる。

@Table

Entityクラスと対応するデータベースのテーブル名を指定するために付与。

@Transactional

クラスもしくはメソッド単位で付与。どちらにも付与した場合はメソッドが優先。DBを更新する際のトランザクションを管理するアノテーション。

@Value

フィールド単位で付与する。付与されたフィールドは、プロパティファイルの設定値が代入される。


以上。

この記事が気に入ったらサポートをしてみませんか?