Spring / Spring Boot アノテーション一覧(改善版)
参考文献:
| カテゴリ | アノテーション | 説明 |
|---|---|---|
| 依存性注入関連 | @Autowired |
自動的にBeanを注入します。コンストラクタ、フィールド、セッターに使用可能。Spring 4.3以降、単一コンストラクタの場合は省略可能。 |
@Qualifier |
同じ型のBeanが複数ある場合、特定のBeanを指定して注入します。 | |
@Primary |
同じ型のBeanが複数ある場合、優先的に注入されるBeanを指定します。 | |
@Resource |
JSR-250標準のアノテーション。名前ベースでBeanを注入します(@Autowiredは型ベース)。 |
|
@Inject |
JSR-330標準のアノテーション。@Autowiredとほぼ同等ですがrequired属性がありません。 |
|
@Lazy |
Beanの初期化を遅延させます(実際に使用されるまで初期化しない)。 | |
| Bean定義・スコープ関連 | @Component |
汎用的なコンポーネントとしてBeanを定義します。ステレオタイプアノテーションの基底です。 |
@Service |
ビジネスロジックを実装するサービス層のクラスに使用します。@Componentの特殊化。 |
|
@Repository |
データアクセス層のクラスに使用します。永続化例外の自動変換機能も持ちます。 | |
@Controller |
Spring MVCのコントローラクラスに使用します。ビューを返す場合に使用。 | |
@RestController |
@Controller + @ResponseBodyの複合アノテーション。RESTful API用。 |
|
@Scope |
Beanのスコープを指定します(singleton, prototype, request, session, application)。 | |
@Configuration |
Java Configクラスを定義し、@Beanメソッドを含めます。 |
|
@Bean |
メソッドの戻り値をSpring Beanとして登録します。 | |
@ComponentScan |
指定パッケージ配下のコンポーネントを自動スキャンします。 | |
| Spring Boot専用 | @SpringBootApplication |
@Configuration + @EnableAutoConfiguration + @ComponentScanの複合アノテーション。 |
@EnableAutoConfiguration |
クラスパスに基づいて自動設定を有効化します。 | |
@ConfigurationProperties |
プロパティファイルの値をPOJOにバインドします。 | |
@EnableConfigurationProperties |
@ConfigurationPropertiesクラスを有効化します。 |
|
| 条件付きBean登録 | @Conditional |
カスタム条件クラスに基づいてBean登録を制御します。 |
@ConditionalOnProperty |
特定のプロパティが存在・一致する場合にBeanを登録します。 | |
@ConditionalOnClass |
クラスパスに特定クラスが存在する場合にBeanを登録します。 | |
@ConditionalOnMissingClass |
クラスパスに特定クラスが存在しない場合にBeanを登録します。 | |
@ConditionalOnBean |
特定のBeanが存在する場合にBeanを登録します。 | |
@ConditionalOnMissingBean |
特定のBeanが存在しない場合にBeanを登録します。 | |
@ConditionalOnExpression |
SpEL式がtrueの場合にBeanを登録します。 | |
@Profile |
特定のプロファイルがアクティブな場合にBeanを登録します。 | |
| ライフサイクル関連 | @PostConstruct |
Bean初期化後に実行されるメソッドを指定します(JSR-250標準)。 |
@PreDestroy |
Bean破棄前に実行されるメソッドを指定します(JSR-250標準)。 | |
@DependsOn |
Bean初期化の順序を制御します。 | |
| AOP関連 | @Aspect |
AOPのアスペクトを定義するクラスに使用します。 |
@Pointcut |
ポイントカット(アドバイス適用箇所)を定義します。 | |
@Before |
メソッド実行前にアドバイスを実行します。 | |
@After |
メソッド実行後にアドバイスを実行します(成功・失敗問わず)。 | |
@AfterReturning |
メソッドが正常終了した後にアドバイスを実行します。 | |
@AfterThrowing |
メソッドが例外をスローした後にアドバイスを実行します。 | |
@Around |
メソッドの前後を囲んでアドバイスを実行します(最も強力)。 | |
| トランザクション関連 | @Transactional |
メソッドやクラスにトランザクションの境界を定義します。propagation、isolation、readOnly、timeout、rollbackFor等の属性があります。 |
@EnableTransactionManagement |
アノテーションベースのトランザクション管理を有効化します。 | |
| Web関連 | @RequestMapping |
特定のURLパスとHTTPメソッドをマッピングします(汎用)。 |
@GetMapping |
HTTP GETリクエストを処理するためのメソッドに使用します。 | |
@PostMapping |
HTTP POSTリクエストを処理するためのメソッドに使用します。 | |
@PutMapping |
HTTP PUTリクエストを処理するためのメソッドに使用します。 | |
@DeleteMapping |
HTTP DELETEリクエストを処理するためのメソッドに使用します。 | |
@PatchMapping |
HTTP PATCHリクエストを処理するためのメソッドに使用します。 | |
@RequestParam |
URLのクエリパラメータをメソッドの引数として受け取ります。 | |
@PathVariable |
URLパスの変数をメソッドの引数として受け取ります。 | |
@RequestBody |
HTTPリクエストのボディをオブジェクトにマッピングします。 | |
@ResponseBody |
メソッドの戻り値をHTTPレスポンスのボディとして返します。 | |
@RequestHeader |
HTTPヘッダーの値をメソッドの引数として受け取ります。 | |
@CookieValue |
Cookie値をメソッドの引数として受け取ります。 | |
@ResponseStatus |
HTTPステータスコードを指定します。 | |
@SessionAttributes |
モデル属性をHTTPセッションに格納します。 | |
@SessionAttribute |
セッション属性を取得します。 | |
@ModelAttribute |
モデルオブジェクトをメソッド引数としてバインドします。 | |
@RequestAttribute |
リクエスト属性を取得します。 | |
@CrossOrigin |
CORS(Cross-Origin Resource Sharing)を有効化します。 | |
| 例外処理関連 | @ExceptionHandler |
特定の例外を処理するメソッドを定義します。 |
@ControllerAdvice |
複数コントローラ共通の例外処理・モデル属性を定義します。 | |
@RestControllerAdvice |
@ControllerAdvice + @ResponseBodyの複合アノテーション(REST API用)。 |
|
| バリデーション関連 | @Valid |
ネストしたオブジェクトの検証をトリガーします(JSR-303標準)。 |
@Validated |
Springのバリデーション。グループ指定が可能です。 | |
@NotNull |
フィールドがnullでないことを検証します。 | |
@NotEmpty |
フィールドがnullおよび空でないことを検証します(文字列、コレクション)。 | |
@NotBlank |
文字列がnull、空、空白のみでないことを検証します。 | |
@Size |
コレクション、配列、文字列のサイズが指定範囲内であることを検証します。 | |
@Min |
数値が指定された最小値以上であることを検証します。 | |
@Max |
数値が指定された最大値以下であることを検証します。 | |
@Email |
文字列がメールアドレス形式であることを検証します。 | |
@Pattern |
文字列が指定された正規表現に一致することを検証します。 | |
@Past / @Future
|
日付が過去/未来であることを検証します。 | |
@Positive / @Negative
|
数値が正数/負数であることを検証します。 | |
@PositiveOrZero / @NegativeOrZero
|
数値が0以上/0以下であることを検証します。 | |
| スケジューリング・非同期 | @EnableScheduling |
スケジュール機能を有効化します。 |
@Scheduled |
定期実行するメソッドを定義します(cron、fixedRate、fixedDelay等)。 | |
@EnableAsync |
非同期処理を有効化します。 | |
@Async |
メソッドを非同期で実行します。戻り値はvoidまたはFuture。 | |
| キャッシュ関連 | @EnableCaching |
キャッシュ機能を有効化します。 |
@Cacheable |
メソッドの結果をキャッシュします。 | |
@CachePut |
メソッド実行後、結果をキャッシュに保存します。 | |
@CacheEvict |
キャッシュからエントリを削除します。 | |
@Caching |
複数のキャッシュアノテーションを組み合わせます。 | |
| テスト関連 | @SpringBootTest |
Spring Boot統合テスト用。アプリケーションコンテキストをロードします。 |
@WebMvcTest |
MVCコントローラの単体テスト用。Web層のみをロードします。 | |
@DataJpaTest |
JPAリポジトリのテスト用。インメモリDBを使用します。 | |
@MockBean |
モックBeanをApplicationContextに登録します。 | |
@MockitoBean |
Mockitoモックを注入します(Spring Boot 3.4以降推奨、@MockBeanの代替)。 |
|
@SpyBean |
スパイBeanをApplicationContextに登録します。 | |
@TestConfiguration |
テスト専用の設定クラスを定義します。 | |
@ActiveProfiles |
テスト時のアクティブプロファイルを指定します。 | |
@DirtiesContext |
テスト後にアプリケーションコンテキストを再作成します。 | |
| Spring Data JPA関連 | @Query |
カスタムJPQL/ネイティブSQLクエリを定義します。 |
@Modifying |
更新・削除クエリであることを示します(@Queryと併用)。 |
|
@EnableJpaRepositories |
JPAリポジトリを有効化します。 | |
@EntityListeners |
エンティティライフサイクルリスナーを指定します。 | |
| セキュリティ関連 | @EnableWebSecurity |
Spring Securityを有効化します。 |
@EnableMethodSecurity |
メソッドレベルセキュリティを有効化します(Spring Security 5.6以降、旧@EnableGlobalMethodSecurity)。 |
|
@PreAuthorize |
メソッド実行前に認可チェックを行います。 | |
@PostAuthorize |
メソッド実行後に認可チェックを行います。 | |
@Secured |
ロールベースのアクセス制御を行います。 | |
@RolesAllowed |
JSR-250標準のロールベースアクセス制御を行います。 | |
| その他のユーティリティ | @Value |
プロパティファイル、環境変数、SpEL式から値を注入します。 |
@PropertySource |
プロパティファイルの場所を指定し、@Valueで使用できるようにします。 |
|
@EventListener |
アプリケーションイベントをリッスンするメソッドを定義します。 | |
@Order |
コンポーネントの実行順序を指定します。 |