ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
レイヤー別 主要アノテーション一覧
① ステレオタイプ(Bean 登録)
Spring コンテナに Bean として登録されるクラスにつけるアノテーション。
| アノテーション | 用途 | 備考 |
|---|---|---|
@Component | 汎用 Bean 登録 | 下記 3 つの親、特に意味付けがない時に使う |
@Controller | Web MVC コントローラ | HTML / JSP を返す |
@RestController | REST API コントローラ | @Controller + @ResponseBody 相当 |
@Service | ビジネスロジック層 | 機能的には @Component と同じだが、意味付けで使う |
@Repository | データアクセス層 | DB 例外を Spring の DataAccessException に変換 |
② DI(依存性注入)
| アノテーション | 用途 |
|---|---|
@Autowired | 型による自動注入。フィールド・コンストラクタ・セッターに付与可 |
@Qualifier("name") | 同型 Bean が複数ある時、名前で特定 |
@Value("${app.host}") | プロパティ値 / 環境変数を注入 |
@Resource(name="...") | JSR-250、名前優先で注入 |
@Inject | JSR-330、@Autowired と同等 |
@Lazy | 必要になるまで Bean 初期化を遅延 |
③ 設定・構成
| アノテーション | 用途 |
|---|---|
@Configuration | JavaConfig クラス(XML 設定の代替) |
@Bean | @Configuration 内でメソッドを Bean 化 |
@ComponentScan | 指定パッケージ配下の @Component を自動検出 |
@PropertySource("...") | 外部プロパティファイルの読み込み |
@Profile("dev") | 環境別 Bean(プロファイル) |
@Conditional | 条件付き Bean 登録 |
④ Spring MVC(Web 層)
| アノテーション | 用途 |
|---|---|
@RequestMapping("/path") | URL とハンドラーメソッドの紐付け(全メソッド対応) |
@GetMapping("/path") | GET 専用ショートカット |
@PostMapping("/path") | POST 専用 |
@PutMapping / @DeleteMapping / @PatchMapping | 各 HTTP メソッド専用 |
@PathVariable | URL パスから値を取得(/users/{id}) |
@RequestParam | クエリパラメータ / フォームから取得 |
@RequestBody | リクエストボディ (JSON 等) をオブジェクトに変換 |
@ResponseBody | 戻り値をレスポンスボディに直接書き出し |
@ResponseStatus(HttpStatus.OK) | HTTP ステータスコード指定 |
@ModelAttribute | フォームバインディング・モデル属性 |
@CrossOrigin | CORS 設定 |
@ExceptionHandler | コントローラ内例外ハンドラ |
@ControllerAdvice | グローバル例外ハンドラ |
⑤ Spring Data JPA
| アノテーション | 用途 |
|---|---|
@Entity | JPA エンティティクラス |
@Table(name="users") | テーブル名指定 |
@Id | 主キー |
@GeneratedValue(strategy=...) | 主キー自動生成(IDENTITY / SEQUENCE / AUTO) |
@Column(name="user_name", nullable=false) | カラム属性 |
@OneToMany / @ManyToOne / @OneToOne / @ManyToMany | 関連 |
@JoinColumn(name="user_id") | 外部キーカラム |
@Query("SELECT u FROM User u WHERE ...") | カスタムクエリ |
@Modifying | 更新クエリ(@Query 付き) |
@Transactional | トランザクション境界 |
⑥ Spring Boot 専用
| アノテーション | 用途 |
|---|---|
@SpringBootApplication | メインクラス。@Configuration + @EnableAutoConfiguration + @ComponentScan |
@EnableAutoConfiguration | 自動設定を有効化 |
@SpringBootTest | テスト時に Spring コンテキストを起動 |
@ConfigurationProperties(prefix="app") | プロパティを POJO にバインド |
@EnableScheduling | スケジュールタスクを有効化 |
@Scheduled(cron="0 0 * * * *") | 定期実行 |
@Async | 非同期実行 |
典型的なクラス構成例
@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor // Lombok: final フィールドのコンストラクタ自動生成
public class UserController {
private final UserService userService;
@GetMapping("/{id}")
public UserDto get(@PathVariable Long id) {
return userService.findById(id);
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public UserDto create(@RequestBody @Valid UserCreateRequest req) {
return userService.create(req);
}
}
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
@Transactional(readOnly = true)
public UserDto findById(Long id) {
User user = userRepository.findById(id)
.orElseThrow(() -> new EntityNotFoundException());
return UserDto.from(user);
}
}
@Repository
public interface UserRepository extends JpaRepository {
Optional findByEmail(String email);
}
@Component vs @Service vs @Repository vs @Controller の違い
すべて Bean 登録のためのアノテーションで、機能的にはほぼ同じです。意味付けと AOP の対象として区別します:
@Component: 汎用、何の役割でもない時@Service: ビジネスロジック層であることを明示@Repository: DAO 層であることを明示 + DB 例外をDataAccessExceptionに自動変換@Controller: Web MVC コントローラ + Spring MVC ハンドラとして認識
機能差があるのは @Repository(例外変換)と @Controller(MVC 認識)のみ。機能と意味の両方で使い分けるのが習慣。
関連記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
同階層のページ
- インストール(eclipseプラグイン)
- クイックスタート
- プロジェクトの作成
- Spring Bootプロジェクトの作成
- Spring Bootプロジェクトの実行
- Spring BootでHello World!
- アノテーション一覧
- DB接続設定からエンティティおよびリポジトリの作成、値の取得まで(JPA編)
- DB接続設定や値の取得(JdbcTemplate編)
- ビューから値をモデルに格納しコントローラーで受け取る方法
- コントローラーにてモデルに値を格納してビューに渡す方法
- テンプレートエンジン
- ModelとModelAndViewの違い
- AOPの使用方法
- classpath: 内部ファイルの読み込み
- file: 外部ファイルの読み込み
- CSVファイルアップロード方法(Ajax)
- CSVファイルダウンロード方法(Ajax)
- Spring Bootプロジェクトのビルドと本番環境へのデプロイ方法(内部tomcat使用)
- Application.propertiesの環境依存設定の分割方法
- JPAにおけるEntityManagerの取得方法
- JPAにおけるjava.sql.Connectionの取得方法
- エラー一覧
- jarの引数を受け取る方法
- Spring BootでGmailからメール送信
- 複数のDBに接続する設定(Spring Boot & JPA編)
- ポート番号の変更
- Basic認証の実装と特定のURLに限定する方法
- Spring SecurityのBasic認証の無効化
- 独自のエラーページを定義する方法
- プロパティファイルの値やjar実行時の引数を取得する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?