Spring Bootの記事一覧
Spring Bootの基礎から実装、運用までを体系的に学ぶための記事をまとめています。初学者向けの入口記事から実務寄りの設計・運用テーマまで横断して読めます。
-
Spring Boot 3.4で@MockBeanが非推奨に - @MockitoBean・@MockitoSpyBeanへの移行と使い方
Spring Boot 3.4で@MockBean/@SpyBeanが非推奨化。置き換え先の@MockitoBean・@MockitoSpyBeanの正しいimport、パッケージ移動、旧APIとの差分、既存テストの一括移行手順を実例付きで解説します。
-
Spring Boot + Hibernate Enversで変更履歴(監査ログ)を自動記録する方法
Hibernate Enversを使い、Spring Bootで「誰がいつ何をどう変えたか」の全リビジョン履歴を自動記録する実装手順を解説。@Auditedによる_AUDテーブル生成、AuditReaderでの過去バージョン取得、リビジョンへのユーザー情報付与、履歴テーブル肥大化対策までを紹介します。
-
Spring Cloud GatewayでAPIゲートウェイを構築する方法 - ルーティング・フィルター・レートリミット
Spring Cloud Gatewayでマイクロサービスの前段に置くAPIゲートウェイを構築する実践ガイド。ルート定義、パスリライト、GlobalFilterでの認証・ロギング、Redis連携のRequestRateLimiter、Resilience4jとのフォールバック統合までをハンズオンで解説します。
-
Spring BootでCSVを出力・取込する方法 - OpenCSVで文字コード・大量データ・バリデーションに対応
Spring BootとOpenCSVでCSVのダウンロード/アップロードを実装する実践ガイド。Excelで文字化けしないShift_JIS/UTF-8+BOM対応、StreamingResponseBodyによる大量データのメモリ効率出力、@CsvBindByNameでのマッピング、取込時の行単位バリデーションとエラー行返却までコード付きで解説します。
-
Spring Bootで独自の自作スターター(Custom Starter)を作る方法 - AutoConfigurationとメタデータ設定
社内共通のログ設定や外部API連携Beanを、依存追加だけで有効化される自作Starterに昇格させる実装手順を解説。autoconfigureモジュールとstarterモジュールの分割、@AutoConfiguration、AutoConfiguration.imports登録、@ConditionalOnによる条件付き構成、@ConfigurationPropertiesと設定メタデータJSON生成まで、ハンズオンで一気通貫に構築します。
-
Spring Boot + JPAのLazyInitializationExceptionを解決する方法 - 「could not initialize proxy - no Session」の原因と対処
Spring Data JPAで遅延ロードした関連にアクセスした瞬間に落ちるLazyInitializationException(could not initialize proxy - no Session)を、Hibernateセッションとトランザクション境界の仕組みから逆引きで解決。JOIN FETCH・@EntityGraph・DTO射影・@Transactionalの4つの正攻法を比較し、open-in-view=trueやEAGER化に逃げない判断軸を示します。
-
Spring Bootでカスタムヘルスチェック(HealthIndicator)と独自Actuatorエンドポイントを作る方法
外部APIやDB、メッセージブローカーなど依存先の死活をカスタムHealthIndicatorで独自ヘルスに組み込み、health groupsでreadiness/livenessに割り当て、@Endpointで運用向けの独自Actuatorエンドポイントを追加する実装手順を、curlでの動作確認付きで解説します。
-
Spring Bootでリクエストパラメータを受け取る方法 - @RequestParam・@PathVariable・@RequestBody・@ModelAttributeの使い分け
Spring BootのControllerでクライアント入力を受け取る@RequestParam・@PathVariable・@RequestBody・@ModelAttributeの4アノテーションを、クエリ文字列・パス変数・JSONボディ・フォームという入力ソース別に使い分ける判断基準つきで解説。required/defaultValue、List複数値、型変換失敗時の400挙動まで実装例で紹介します。
-
Spring Data JPAのプロジェクションでDTOを直接取得する方法 - インターフェース射影とクラスベース射影の使い分け
Spring Data JPAのプロジェクションで、必要な列だけをSELECTしてDTO/インターフェースに直接射影する方法を解説。インターフェース射影・クラス(コンストラクタ)射影・動的射影を実装で比較し、発行SQLの違いや選定基準、@Query併用時の落とし穴まで整理します。
-
Spring BootのCommandLineRunner・ApplicationRunnerで起動時処理を実行する方法
Spring Bootのアプリ起動完了直後に一度だけ処理を実行するCommandLineRunnerとApplicationRunnerの使い方を解説。最小実装、@Orderによる実行順序、ApplicationArgumentsでの起動引数受け取り、例外時の挙動、@PostConstructやApplicationReadyEventとの使い分けまで実例で整理します。
-
Spring BootのJdbcTemplateで素のSQLを実行する方法 - queryForObject・RowMapper・バッチ更新の使い方
Spring標準のJdbcTemplateで生SQLを安全に書く方法を、queryForObjectでの単一行・スカラ取得、RowMapper/BeanPropertyRowMapperでの複数行取得、update/batchUpdateでのCRUD、NamedParameterJdbcTemplateでの名前付きバインド、@Transactional連携まで実装コード中心に解説します。
-
Spring Boot + JPAで悲観的ロック(@Lock)を実装する方法 - PESSIMISTIC_WRITEとデッドロック対策
Spring DataのJPA @LockでPESSIMISTIC_WRITE/READを付与し、SELECT ... FOR UPDATEの発行確認、jakarta.persistence.lock.timeoutでのタイムアウト制御、デッドロック回避、楽観ロックとの選択基準を実コードで解説します。
-
Spring Bootのdata.sql・schema.sqlで初期データを投入する方法 - Flyway/Liquibaseとの使い分け
Spring Bootのschema.sql/data.sqlによるSQL初期化を解説。data.sqlが実行されない原因、spring.sql.init.mode、Hibernate ddl-autoとの実行順序、defer-datasource-initializationの設定、そして本番でFlyway/Liquibaseを選ぶ判断基準まで整理します。
-
Spring Bootで複数データソースを扱う方法 - 読み書き分離とAbstractRoutingDataSource
Spring Bootで複数データソースを扱う実装を、静的な複数DataSource構成とAbstractRoutingDataSourceによる動的な読み書き分離の2パターンで解説。@Transactional(readOnly=true)をトリガーにプライマリ/レプリカへルーティングする方法まで、コピーして動くコードで整理します。
-
Spring Boot 3.2のRestClientで同期HTTPクライアントを実装する - RestTemplate/WebClientからの移行
Spring Boot 3.2で追加されたRestClientの実装をハンズオンで解説します。フルエントAPIでのGET/POST/PUT/DELETE、onStatusでのエラーハンドリング、connect/readタイムアウト、MockRestServiceServerでのテスト、RestTemplateからの移行手順、WebClientや@HttpExchangeとの使い分けまでまとめました。
-
Spring Bootのパッケージ構成ベストプラクティス - レイヤー型とフィーチャー(機能)型の使い分け
Spring Bootのパッケージ構成で迷う初〜中級者向けに、レイヤー型とフィーチャー型の構造・利点・限界を比較。規模に応じた選び方、依存方向の保ち方、ArchUnitによる依存ルールの自動テスト、Spring Modulithへの発展経路までを段階的に解説します。
-
Spring Bootの@Retryableでリトライ処理を実装する
Spring Bootでspring-retryの@Retryableを使い、外部APIの503やDB接続エラーに指数バックオフ付きの自動リトライを実装する方法を解説します。@Recoverによるフォールバック、self-invocationの落とし穴、Resilience4jとの使い分けまでコード例で紹介します。
-
Spring BootのHTTP Interface(@HttpExchange)で宣言的HTTPクライアントを作る
Spring Framework 6標準の@HttpExchangeとHttpServiceProxyFactoryで、Spring Cloud依存を増やさずに宣言的HTTPクライアントを実装する手順を解説。RestClient/WebClientアダプタの構成、エラーハンドリング、OpenFeignとの使い分けまで実例で紹介します。
-
Spring BootでExcelファイルを出力・読み込みする方法 - Apache POIで帳票・データ取込を実装
Spring BootとApache POIでExcel(xlsx)を出力・読み込みする実装ガイド。Workbook/Sheet/Cellの基本、REST APIでのダウンロード、SXSSFWorkbookによる大量データのメモリ対策、アップロードされたxlsxのパースまでをコード付きで解説します。
-
Spring Bootの@DataJpaTestでRepository層のスライステストを書く方法 - H2とTestcontainersの使い分け
Spring Boot 3.xの@DataJpaTestでRepository層に絞ったスライステストを書く方法を解説。自動ロールバック、TestEntityManager、@AutoConfigureTestDatabaseによるH2/実DB切り替え、クエリメソッドや@Queryの検証、Testcontainers併用の使い分けまでを実例つきで紹介します。
-
Spring Bootの依存性注入3方式を徹底比較 - コンストラクタ・セッター・フィールドインジェクションの使い分け
Spring Bootのコンストラクタ・セッター・フィールドインジェクションの違いを、テスト容易性・null安全性・循環依存検知の観点で比較。@RequiredArgsConstructorとの組み合わせや循環依存の回避策まで実例で解説します。
-
Spring BootでPDFを動的生成する方法 - OpenPDFとThymeleafで帳票出力
Spring BootでPDFを動的生成する実装ガイド。OpenPDF/iText/Flying Saucerのライセンス比較、Thymeleafテンプレートからの変換、日本語フォント埋め込み、REST APIでのダウンロード実装まで解説します。
-
Spring BootでLombokを使ってボイラープレートを削減する方法
Spring Boot開発で頻出するLombokアノテーション(@Data・@Builder・@RequiredArgsConstructor・@Slf4jなど)の役割と使い分けを実務目線で解説。JPA Entityでの落とし穴やコンストラクタインジェクションとの組み合わせ方も整理します。
-
Spring Bootアプリが起動しない時の原因切り分けと対処法
『APPLICATION FAILED TO START』が出て焦っているあなたへ。Spring Boot 3.x前提に、ポート衝突・Bean重複・循環参照・DataSource未設定・プロファイルミスなど7つの典型パターンを症状から逆引きで解説。FailureAnalyzerメッセージの読み方と--debugフラグの使い方も実例つきでまとめました。
-
Spring REST DocsとSpringdoc OpenAPIの違いと使い分け
Spring REST DocsとSpringdoc OpenAPIを生成方式・正確性・運用負荷の観点から比較し、チーム規模やAPI用途に応じた選定基準と併用パターンを解説します。
-
Spring Modulithでモジュラーモノリスを実現する方法
Spring Modulith 1.xを使ったモジュラーモノリス構築の実践ガイド。@ApplicationModuleでのパッケージ境界定義、ApplicationModules.verify()による境界検証、Event Publication Registryでのイベント永続化、既存ApplicationEvent実装からの移行手順までを具体コードで解説します。
-
Spring BootのTestcontainersでPostgreSQL・Kafka・Redisを使った統合テストを書く方法
Spring Boot 3.1+の@ServiceConnectionを使い、PostgreSQL・Kafka・Redisを同時に立ち上げるマルチコンテナ統合テストの書き方と、再利用設定によるCI高速化までを実践的に解説します。
-
Spring BootのBeanスコープを理解する - singleton・prototype・request・sessionの使い分け
Spring Bootの5つのBeanスコープ(singleton/prototype/request/session/application)の動作と使い分けを徹底解説。『@Scope("prototype")を付けたのに同じインスタンスが返る』落とし穴と、ObjectProvider・@Lookup・jakarta.inject.Providerによる4つの回避策を実装例付きで紹介します。
-
Spring BootのJackson設定でJSONシリアライズをカスタマイズする - 日付・null除外・snake_case対応ガイド
Spring BootのJacksonで『LocalDateTimeが配列で返る』『フロントがsnake_caseを要求』といった定番課題を解決。日付フォーマット、null除外、snake_case変換、@JsonView/Mixin/カスタムSerializerまでをコード例付きで解説するREST API向け実装ガイドです。
-
Spring BootでTransactional Outboxパターンを実装する
Spring BootでDB更新とKafka送信の二重書き込み問題を解決するTransactional Outboxパターンの実装方法を解説します。Outboxテーブル設計、Pollerによるリレー、Debezium CDCとの比較まで実コード付きで紹介します。
-
Spring Bootでマルチテナント構成を実装する方法
Spring Boot 3.2とHibernate 6.4でマルチテナント(Database/Schema/Shared-schema)を実装する方法を、比較表と動くコードで解説。MultiTenantConnectionProviderからJWT/ヘッダーでのテナント解決Filterまでまとめます。
-
Spring BootのGlobalExceptionHandlerを本番運用向けに実装する
Spring BootのGlobalExceptionHandler(@RestControllerAdvice)を本番運用に耐える品質で実装する方法を解説します。スタックトレースのログ出力、MDCによるtraceID付与、ProblemDetailへのカスタムプロパティ拡張など、運用フェーズで必要な実装パターンを具体的なコード例とともに紹介します。
-
Spring BootでLiquibaseを使ったデータベースマイグレーション管理
Spring BootにLiquibaseを導入し、XML/YAML/SQL形式のchangelog記法、changeSetの書き方、ロールバック実行、Flywayとの比較・選定基準までを実装コード付きで解説します。
-
Spring Bootでマイクロサービスの分散トランザクションをSagaパターンで実装する方法
Spring Boot + Kafkaでマイクロサービス間の分散トランザクションをSagaパターンで実装する方法を解説。Choreography型とOrchestration型の選定基準、補償トランザクション設計、べき等性確保まで実装コード付きで紹介します。
-
Spring Boot + JPAで論理削除を実装する方法 - @SQLDelete・@SQLRestriction・Filterの使い分け
Spring Boot 3.x + Hibernate 6.4で論理削除(ソフトデリート)を透過的に実装する方法を解説します。@SQLDelete + @SQLRestriction(旧@Where)と@SoftDelete・@FilterDefを比較して最短で選べるよう整理し、ユニーク制約衝突・復元処理・削除者の記録などハマりがちなポイントもまとめました。
-
Spring BootとShedLockで分散環境の@Scheduled重複実行を防ぐ方法
Kubernetes等で複数Pod運用時に発生する@Scheduledの重複実行問題を、ShedLockで解決する実装手順を解説します。JDBC/Redis両方のLockProvider設定、@SchedulerLockの正しい使い方、落とし穴まで紹介。
-
Spring BootでServer-Sent Events (SSE)を実装する方法 - SseEmitter / WebFlux実装ガイド
Spring BootでServer-Sent Events (SSE)を実装する方法を解説。Spring MVCのSseEmitterとWebFluxのFlux<ServerSentEvent>による実装、EventSourceでの自動再接続とLast-Event-IDによる再開、複数クライアントへのブロードキャスト、Nginxのproxy_bufferingなど本番運用の落とし穴、LLMストリーミング応答中継の実例まで網羅します。
-
Spring SecurityでJWTリフレッシュトークンを実装する方法
Spring Bootでアクセストークンとリフレッシュトークンを発行・ローテーション・失効させる実装手順を、Redis永続化とリユース検知を含めて解説します。
-
Spring BootのREST APIで冪等性(Idempotency-Key)を実装する方法 - 二重課金・ダブルクリック対策
決済APIの二重課金・ダブルクリックによる二重実行を防ぐ、Spring BootでのIdempotency-Keyヘッダー方式の実装を解説。OncePerRequestFilterとRedisを使った実装コード、並行リクエスト時のロック制御、TTL設計、本番運用の注意点まで実務目線で紹介します。
-
Spring Bootアプリの起動を高速化する方法 - CDS・AOT・遅延初期化で短縮
Spring Bootアプリの起動が遅くてPodがreadinessに間に合わない、ローカルの再ビルドで集中力が切れる—そんな悩みを解決する実践手順。Actuator startupでボトルネックを特定し、遅延初期化・AutoConfig除外・CDS・AOTを段階適用して定常的に短縮するコツを解説します。
-
Spring BootのJPAで楽観的ロック(@Version)を実装して同時更新の競合を防ぐ方法
ECサイトの在庫更新や予約システムで起きる「後勝ち上書き(Lost Update)」を@Versionアノテーションで防ぐ方法を解説。OptimisticLockExceptionのハンドリングからSpring Retryを使ったリトライ戦略、並行テストの書き方まで実践コードで紹介します。
-
Spring BootでQueryDSLを使った型安全な動的クエリの実装方法
QueryDSLをSpring Bootに導入し、APTによるQ型クラス生成からJPAQueryFactoryでの動的クエリ実装、ページネーション連携まで実践的に解説。Specificationとの比較も含む。
-
Spring BootでAPIレートリミットを実装する方法 - Bucket4jとFilterでリクエスト数を制限する
Bucket4jとSpring BootのServlet Filterを組み合わせてIP単位・APIキー単位のレートリミットをゼロから実装する手順を解説します。制限超過時にHTTP 429を返す処理の書き方、Resilience4j @RateLimiterとの用途の違いも整理します。
-
Spring SecurityのCSRF対策を正しく理解する - REST APIとWebアプリでの設定の違い
Spring SecurityでPOSTが403になる原因をCSRFの仕組みから解決。REST APIで`csrf().disable()`が正しい理由、Thymeleafフォームで必須となる設定、`CookieCsrfTokenRepository.withHttpOnlyFalse()`によるAJAX対応まで、Spring Security 6のLambda DSL実装例で整理します。
-
Spring Data JPAのSpecificationで動的クエリを実装する方法 - JpaSpecificationExecutorで検索フォームの絞り込みに対応する
検索フォームのif地獄を解消する Spring Data JPA Specification の実装ガイド。JpaSpecificationExecutorのセットアップ、null条件の安全なスキップ、複数条件のAND/OR結合、ページネーション連携、QueryDSLとの使い分けまで、実例コードで解説します。
-
Spring BootのHikariCPコネクションプールを正しく設定・チューニングする方法 - デフォルト10では足りない理由
Spring BootのHikariCPでConnection is not availableを根絶するチューニング手順。maximumPoolSizeのデフォルト10と公式算出式(コア数×2+1)、connectionTimeout 30秒→3秒の見直し、maxLifetimeとwait_timeoutの関係、leakDetectionThresholdでのリーク検出までを実装例つきで解説。設定見直しでタイムアウトエラー率を40%→3%まで削減した比較データつき。
-
Spring BootでMockMvcを使ったControllerの単体テストを書く方法 - @WebMvcTest入門
DB不要・高速でコピペで動くController単体テストを@WebMvcTestとMockMvcで実現。@MockBeanでServiceをモック化し、jsonPathでJSON検証、バリデーションエラー(400)、Security(@WithMockUser)まで実装例付きで解説します。
-
Spring Bootの@ConfigurationPropertiesをBean Validationで検証する方法 - 設定ミスを起動時に検出するFail Fast実装ガイド
Spring Bootの@ConfigurationPropertiesにBean Validation(@Validated/@NotBlank/@Pattern)を組み合わせ、設定ミスを本番障害になる前にアプリ起動時で即検出する手順を解説。ネスト検証の@Valid伝播、起動エラーメッセージの読み方、ApplicationContextRunnerによる軽量テストまで実装例付きで網羅します。
-
Spring Boot 3.xのProblem Details(RFC 9457)でエラーレスポンスを標準化する方法
Spring Boot 3.xで標準サポートされたProblem Details(RFC 9457)でエラーレスポンスを統一する方法を解説。spring.mvc.problemdetails.enabled設定、ProblemDetailクラスとErrorResponseの使い方、@ControllerAdviceとResponseEntityExceptionHandlerの統合、Spring Boot 2.xからの移行手順、Spring Securityやバリデーションエラーへの適用までコード例つきで紹介します。
-
Spring BootをOAuth2リソースサーバーとして構成する方法 - JWT検証とスコープ認可の実装
Keycloak・Cognito・Auth0などの外部IdPが発行したJWTをSpring Securityのリソースサーバー機能で検証し、スコープ・クレームベースの認可を実装する手順を解説します。
-
Spring BootのBeanライフサイクルを理解する - @PostConstruct・@PreDestroy・InitializingBeanの使い方
SpringのBeanが生成・初期化・破棄されるまでの流れを図解し、@PostConstruct・@PreDestroy・InitializingBean・DisposableBeanの4つの実装パターンをユースケースごとに使い分ける方法を解説します。
-
Spring BootでJasyptを使って設定ファイルの機密情報を暗号化する方法
application.ymlにDBパスワードやAPIキーを平文で書いていることに不安を感じているなら、Jasyptが手軽な解決策です。ENC()ラッパーによる暗号化手順から環境変数・CI連携まで、本番運用を想定した実装手順を解説します。
-
Spring BootでOpenFeignを使って外部API呼び出しを宣言的に実装する方法
spring-cloud-openfeignの依存追加から@FeignClientインターフェース定義、エラーハンドリング、タイムアウト・ログ設定まで一気通貫で解説する実装ガイド。RestTemplate/WebClientのボイラープレートに悩む開発者向け。
-
Spring BootでGraphQLを使う方法 - Spring for GraphQLの基本とREST APIとの使い分け
Spring Boot 3.xのSpring for GraphQLを使い、スキーマ定義からQuery・MutationResolver実装、DataLoaderによるN+1対処、Spring Securityとの統合までを解説。REST APIとの比較で採用判断基準も明確にします。
-
Spring BootでMongoDBを使う方法 - Spring Data MongoDBの基本からクエリ・集計まで
Spring BootアプリにMongoDBを導入する手順を解説。@Documentによるエンティティ定義、MongoRepositoryのCRUD操作、クエリメソッド、MongoTemplateによるカスタムクエリ、Aggregation Pipelineまで実装コードで一気に学べる実践ガイド。
-
Spring BootでMapStructを使ってEntity-DTO変換を自動化する方法
手書きのtoDto()/toEntity()メソッドをMapStructで自動生成する実装ガイド。依存追加から@Mapperの基本、ネストオブジェクト・カスタム変換・ユニットテストまで網羅。
-
Spring Boot REST APIのバージョニング戦略 - URLパス・ヘッダー・Content-Typeの使い分け
Spring BootでREST APIをバージョニングする3つの方式(URIパス・カスタムヘッダー・Acceptヘッダー)を実装コード付きで比較。自チームのAPI特性に合った方式を選ぶための判断基準とSwagger UI統合例も解説します。
-
Spring BootでWireMockを使って外部API呼び出しをテストする方法 - import設定から実践まで
WireMockをSpring Bootのテストに導入し、正常系・エラー系・タイムアウトまで外部APIのスタブをHTTPレベルで定義する実践ガイド。WireMock 3.xの新パッケージ org.wiremock.client.WireMock の正しいimport文や、MockitoとWireMockの使い分け基準も解説します。
-
Spring BootでAWS S3にファイルをアップロード・ダウンロードする方法 - AWS SDK v2と署名付きURL対応
Spring BootアプリからAWS S3へのファイルアップロード・ダウンロードをAWS SDK v2で実装する方法を解説。spring-cloud-aws 3.xとの選び方、MultipartFile対応のService実装、署名付きURL生成、IAMロール認証、最小権限ポリシー例までコピペで動くサンプル付きで紹介します。
-
Spring Bootで多言語対応(i18n)を実装する方法 - MessageSourceとLocaleResolverの使い方
Spring BootのREST APIで多言語化(i18n)を実現する実装ガイド。Accept-Languageヘッダーによる言語切り替え、messages.propertiesのロケールフォールバック、MessageSourceとAcceptHeaderLocaleResolverの設定、@Validバリデーションエラーメッセージのローカライズ、@RestControllerAdviceでの多言語エラーレスポンスまで一気通貫で解説します。
-
Spring BootでJSON構造化ログを出力する方法 - Logstash EncoderとMDCで本番運用に備える
logstash-logback-encoderを使ってSpring BootのログをJSON形式で出力する設定手順を解説。MDCでリクエストIDやユーザーIDを自動付与する方法、Spring Boot 3.4のネイティブ構造化ログ対応、環境別プロファイル切り替えまでカバーします。
-
Spring Bootのグレースフルシャットダウンとゼロダウンタイムデプロイを実現する方法
Spring Boot 2.3以降のgraceful shutdown設定とKubernetesのpreStopフックを組み合わせて、デプロイ時に処理中リクエストを取りこぼさないゼロダウンタイム構成を実践的に解説します。
-
Spring BootでREST APIのCRUDを実装する - Controller・Service・Repositoryの基本構成
Spring BootでREST APIのCRUD(作成・取得・更新・削除)を実装する手順を、Controller・Service・Repositoryの3層構成でステップバイステップ解説。GET/POST/PUT/DELETEの4エンドポイントをコピペで動かし、curlでの動作確認まで一気通貫でカバーします。
-
Spring BootでKafkaのProducer・Consumerを実装する - サンプルコード付き入門ガイド
spring-kafkaでKafkaのProducerとConsumerをSpring Boot 3.xアプリにゼロから実装する実践ガイド。Docker Composeでブローカーを即起動し、KafkaTemplate・@KafkaListenerの基本から、DefaultErrorHandlerでのリトライ・Dead Letter Topic転送、@EmbeddedKafkaでのテストまでコード中心に解説します。
-
Spring Securityのメソッドセキュリティ - @PreAuthorizeでRBACを実装する方法
Spring Bootで@PreAuthorize/@PostAuthorize/@Securedによるメソッドレベルのロールベースアクセス制御(RBAC)を実装する手順を解説。@EnableMethodSecurityの有効化、hasRole/hasAuthorityの違い、SpELによる所有者チェック、@WithMockUserでのテストまでコード付きで習得できます。
-
Spring BootでWebSocketを使ったリアルタイム通信を実装する方法 - STOMPとSockJSの基本
Spring Boot + STOMP + SockJS でブロードキャスト型チャットを最短で動かす手順を、設定クラス・@MessageMapping・SimpMessagingTemplateの3層構造で解説。1対1メッセージング、Principalによる認証ユーザー取得、外部ブローカーでのスケーリングまでカバーします。
-
Spring BootでRedisを使う方法 - セッション管理・キャッシュ・Pub/Subの実装パターン
複数インスタンスでセッションが共有できない、@Cacheableのバックエンドを切り替えたい、といった課題をRedisで解決する方法を解説。spring-boot-starter-data-redisの接続設定、Spring Sessionによるセッション外部化、RedisCacheManager、Pub/Sub実装まで用途別にコード付きで紹介します。
-
Spring BootでCORSを設定する方法 - @CrossOriginとWebMvcConfigurerの使い分け
React/VueなどのフロントエンドからSpring Boot REST APIを呼び出す際のCORSエラーを解決する実践ガイド。@CrossOrigin・WebMvcConfigurer・SecurityFilterChainの3パターンの使い分けと、Spring Security導入時の落とし穴まで解説します。
-
Spring BootでOpenAPI(Swagger UI)を使ってREST APIドキュメントを自動生成する方法
springdoc-openapiの導入からアノテーションによるドキュメント強化、JWT認証付きエンドポイントへのBearerトークン設定、YAML出力まで実践的に解説します。
-
Spring BootのJPA Auditingで作成日時・更新日時を自動記録する方法
Spring BootのJPA Auditingを使ってエンティティの作成日時・更新日時を自動記録する方法を解説。@CreatedDate・@LastModifiedDate・@EnableJpaAuditing・AuditorAwareの設定からSpring Security連携まで実践コードで紹介します。
-
Spring BootでRabbitMQのProducer・Consumerを実装する方法 - AMQPとspring-amqpの基本
spring-amqpを使ってRabbitMQのExchange・Queue・Bindingをコードで定義し、RabbitTemplateによるメッセージ送信と@RabbitListenerによる受信を実装する方法を解説。デッドレターキュー・リトライ設定・Kafkaとのユースケース比較まで網羅。
-
Spring WebFluxで始めるリアクティブプログラミング - Spring MVCとの違いと使い分け
Spring MVCに慣れたJava開発者向けに、WebFluxのノンブロッキングI/Oの仕組みからMono/Flux基本操作、RouterFunctionによるエンドポイント実装まで解説。Spring MVCとの比較表と採用判断基準で、自プロジェクトへの適用判断もできるようになります。
-
Spring Bootでカスタムバリデーションアノテーションを作る方法 - @Constraint/ConstraintValidator実装ガイド
@ConstraintとConstraintValidatorで独自バリデーションを作る手順を、電話番号形式・メール重複(DI利用)・パスワード確認(クロスフィールド)の3パターンで解説。@NotBlank / @Patternでは届かないルールを再利用可能なアノテーションに落とし込み、Service層に散らばるチェックロジックを整理できます。
-
Spring BootでThymeleafを使ったサーバーサイドレンダリングの実装ガイド - フォーム・バリデーション・Security対応
Spring Boot 3.x × Thymeleaf 3.1で、HTMLレスポンス・フォーム処理・Bean Validationエラー表示・Spring Security連携(CSRF/認証表示切替)までを一気通貫で学べる実装チュートリアル。コード例ベースでそのまま動かせます。
-
Spring BootでメールをJavaMailSenderで送信する方法 - Gmail/SMTP設定からHTMLメールまで
JavaMailSenderを使ったメール送信をゼロから解説。Gmail SMTP設定、テキスト・HTMLメール、@Asyncによる非同期送信、よくある認証エラーのトラブルシューティングまで実践コード付きで紹介します。
-
Spring BootのApplicationEventでモジュール間を疎結合にする方法
ApplicationEventとApplicationEventPublisherを使ったイベント駆動設計を実装例で解説。@TransactionalEventListenerによるトランザクション完了後処理、非同期イベントハンドリング、テスト方法まで網羅します。
-
Spring Boot 3.xでGraalVM Native Imageを使ってネイティブコンパイルする方法
Spring Boot 3.xプロジェクトをGraalVM Native Imageでネイティブコンパイルする手順を解説。AOT処理の仕組み、Reflectionヒントの追加、native-image-agentの活用、Testcontainersでの動作検証、トラブルシューティングまでカバーする実践ガイド。
-
Spring Boot 3.2+でMicrometer TracingとZipkinを使って分散トレーシングを導入する
Spring Boot 3.2以上でMicrometer TracingとZipkinを使って分散トレーシングを導入する手順を解説。Spring Cloud Sleuth廃止後の移行方法、サービス間のトレースID伝播、Zipkin UIでの確認方法まで実践的に紹介します。
-
Spring BootアプリをKubernetesにデプロイする方法
DockerizeしたSpring BootアプリをKubernetesにデプロイする手順を解説。Deployment・Service・ConfigMap・SecretのManifest作成から、ActuatorのヘルスエンドポイントをlivenessProbe/readinessProbeに接続する設定まで、実務で使えるパターンを紹介します。
-
Spring Boot 2.x から 3.x への移行ガイド - Java 17必須・チェックリスト付き
Spring Boot 2.7 サポート終了(EOL)と Java 17 必須化に伴う 2.x→3.x 移行手順を実例コードで解説。javax→jakarta 置換、SecurityFilterChain 移行、spring.factories 廃止対応をチェックリスト付きで整理し、コンパイル/起動エラーの原因と対処を最短ルートで把握できます。
-
Spring BootでResilience4jを使ったサーキットブレーカーを実装する方法 - Spring Boot 3.x対応ガイド
Spring Boot 3.xでHystrixの後継Resilience4jを使い、サーキットブレーカーを実装する手順を解説。@CircuitBreaker・@Retry・@RateLimiter・Bulkhead・TimeLimiterの使い方、フォールバック設計、application.ymlのパラメータ調整、Actuatorでの状態確認まで実践コードで紹介します。
-
Spring BootでGoogleログイン(OAuth2)を実装する方法
Spring Security OAuth2 Clientを使ってGoogleソーシャルログインをゼロから実装するステップバイステップガイド。OAuth2認可コードフローの仕組みからapplication.yml設定・UserInfo取得まで、ローカル環境で動くアプリを構築しながら解説します。
-
Spring Boot 3.2 + Java 21の仮想スレッド(Virtual Threads)で高スループットを実現する方法
Java 21のProject LoomによるVirtual Threadsをspring.threads.virtual.enabled=trueで有効化し、従来スレッドモデルとのパフォーマンス差を実測。ThreadLocalの挙動変化・ピン留め問題・@Asyncとの使い分けまで解説する実践ガイド。
-
Spring BootでファイルアップロードとダウンロードをREST APIで実装する方法 - MultipartFileの使い方
MultipartFileを使ったファイルアップロード・保存・ダウンロードの実装をステップバイステップで解説。サイズ上限設定・MIMEタイプバリデーション・例外処理まで本番で使えるコード例を網羅します。
-
Spring BootのメトリクスをPrometheus+Grafanaで可視化する
Spring BootアプリのメトリクスをMicrometer経由でPrometheusに収集し、Grafanaダッシュボードでリアルタイム可視化するまでの構築手順をハンズオン形式で解説。カスタムメトリクス(Counter・Gauge)の実装例と本番運用時のセキュリティ注意点も紹介します。
-
Spring Bootのキャッシュ機能で高速化する方法 - @Cacheableと@CacheEvictの使い方
Spring Cache Abstractionを使ってDBアクセスを減らし、レスポンスを高速化する実装ガイド。@Cacheable、@CacheEvict、@CachePutの使い方から、CaffeineとRedisの選定、キャッシュ戦略まで実例で解説します。
-
Spring BootのInterceptorとFilterの違いと使い分け - リクエスト前後処理の実装サンプル付き
Spring BootのFilterとHandlerInterceptor、結局どちらを使えばいいのか迷う方向けに使い分けの判断基準を最初に提示。実行タイミング・Spring DI管理・取得できる情報の違いを整理し、認証チェック・リクエストログ・CORS・例外処理などユースケース別に実装サンプル付きで解説します。
-
Spring BootでFlywayを使ったデータベースマイグレーション管理 - バージョン管理から本番適用までの導入ガイド
Spring BootアプリケーションでFlywayを使ってデータベーススキーマを安全にバージョン管理する実践ガイド。spring-boot-starter-flywayの導入、application.propertiesの設定、flyway_schema_historyテーブルの仕組み、baseline-on-migrateによる既存DB対応、flywayRepairを使ったトラブルシューティングまで具体例で解説します。
-
Spring Batchで大量データを安全に処理する方法 - Job/Step/Chunk処理の入門ガイド
Spring Batchを使った大量データバッチ処理の実装方法を、はじめての方でも追えるサンプルコード付きで解説。Job/Step/ItemReader/ItemWriterの基本構成からchunk処理によるメモリ効率の良い実装、トランザクション管理、skip・retryによるエラーハンドリングまで、Spring Boot 3.x 対応の最新記法でまとめています。
-
Spring Bootで非同期処理を実装する方法 - @Asyncと@EnableAsyncの使い方
Spring Boot 3.2+ / Java 21 の Virtual Threads にも対応した @Async / @EnableAsync の実装ガイド。メール送信や外部API呼び出しをバックグラウンド化してAPIを高速化する方法、ThreadPoolTaskExecutor のサイジング、RejectedExecutionHandler・graceful shutdown・MDC伝播 (TaskDecorator)・CompletableFuture まで本番運用ノウハウを実装例で解説します。
-
Spring Bootの自動構成(AutoConfiguration)の仕組みを理解する
Spring Bootがなぜ何も設定しないのに動くのかを、@EnableAutoConfigurationとConditionアノテーションの観点から解説します。デバッグ方法やカスタムAutoConfigurationの作り方まで踏み込んだ実践的な解説です。
-
Spring Bootのキャッシュ機能を使う方法 - @Cacheableで手軽にパフォーマンス改善
Spring Cache Abstractionの仕組みから@Cacheable・@CacheEvict・@CachePutの使い方、CaffeineとRedisへの切り替え、Micrometerによるヒット率計測までを実践コード付きで解説。DBや外部APIの重複呼び出しによるレスポンス遅延を、アノテーション数行から改善したい初〜中級者向けガイドです。
-
Spring Bootで結合テストを書く方法 - @SpringBootTestとTestcontainersでDBまで通したテスト
@SpringBootTestでアプリ全体を起動するテストの書き方と、TestcontainersでDockerコンテナ上の実DBに接続した結合テストの実装手順をコード例とともに解説します。
-
Spring Bootでログ出力を設定する方法 - Logback、SLF4Jの基本と実践的な設定
Spring Bootのログ設定を基礎から実践まで解説。application.propertiesでのログレベル変更、logback-spring.xmlによるファイル出力、ログローテーション、環境別設定の具体的な実装方法を段階的に紹介します。
-
Spring BootでREST APIを呼び出す方法 - RestTemplateとWebClientの使い分け
Spring Bootで外部REST APIを呼び出す2つの主要手段、RestTemplateとWebClientの基本的な使い方から使い分け基準、タイムアウト設定、エラーハンドリングまで実践的に解説します。
-
Spring BootアプリをDockerコンテナで動かす方法 - Dockerfile作成からDocker Compose連携まで
Spring BootアプリのDockerfile最適化(マルチステージビルド・レイヤーキャッシュ)からDocker ComposeでのPostgreSQL連携起動まで、ローカル開発〜本番移行を一本で解説する実践ガイド。
-
Spring Security + JWTでステートレス認証を実装する方法
Spring Boot REST APIにJWT認証をゼロから組み込む実践ガイド。トークン生成・検証・JwtAuthenticationFilterの実装からSecurityFilterChain設定・動作確認まで、コードを中心にステップバイステップで解説します。
-
Spring Bootの@Transactionalでトランザクション管理を理解する - 伝播レベルと分離レベルの使い分け
Spring Bootの@Transactionalアノテーションを使ったトランザクション管理を基礎から実践まで解説。デフォルト動作、伝播レベル7種類、分離レベル4種類の使い分けと、ロールバックが効かない典型的な失敗パターン(checked例外、self-invocation)の対処法を実例付きで紹介します。
-
Spring BootのSpring Securityで始める認証入門 - Basic認証からフォーム認証まで
Spring BootでSpring Securityを使った認証を段階的に実装する初心者向けチュートリアル。SecurityFilterChainの基本、BCryptパスワードエンコーダー、Basic認証(curl確認)からフォーム認証・ログアウト・カスタムログインページまで、つまずきやすい設定ポイントを丁寧に解説します。
-
Spring BootのREST APIでページネーションを実装する方法 - PageableとPageの使い方
Spring Data JPAのPageableとPageを使ったREST APIのページネーション実装を段階的に解説。クエリパラメータでのページ指定、ソート条件、カスタムレスポンス形式、エラーハンドリングまで実践的なコード例で説明します。
-
Spring Bootのapplication.properties/ymlで設定を管理する - @ValueとConfigurationPropertiesの使い分け
Spring Bootの設定ファイルの基本構文から、@Valueと@ConfigurationPropertiesの実務での使い分け、環境変数やプレースホルダを使った設定管理まで、実践的に解説します。
-
Spring Data JPAのクエリメソッド、どう書けばいいか迷ったことありませんか?
Spring Data JPAのクエリメソッド(findBy/existsBy/countBy/deleteBy)の命名規則を一覧表で整理。Containing/StartingWith/GreaterThan/Between/In/IsNull等のキーワードと生成SQL・使用例を早見表で確認できます。@Queryによるカスタムクエリ、ソート・ページングまで実例付きで解説。
-
Spring Boot JPAの関連マッピング入門 - @OneToMany/@ManyToOne/@ManyToMany・mappedByの使い方
Spring Boot JPAの@OneToMany/@ManyToOne/@ManyToMany/mappedByを初心者にも分かるように解説。双方向/単方向の違い、cascade、FetchType、N+1問題、循環参照対策までコード例付きでつまずきポイントを解消します。
-
Spring Bootでテストを書こう - JUnitとMockitoで始める単体テスト入門
Spring Bootの単体テストをJUnit 5とMockitoで書く方法を、Service層(@Mock/@InjectMocks)とController層(@WebMvcTest/@MockBean/MockMvc)に分けて段階的に解説。Given-When-Thenパターン、正常系・異常系、assertThrowsまで具体的なコード例で学べます。
-
Spring BootのProfileを使って環境によって違う設定を安全に切り替える方法
Spring BootのProfileを使うと、開発・検証・本番で設定を切り替えられます。application.ymlの書き分けから有効化方法、よくある落とし穴まで、分かりやすく解説します。
-
Spring Boot @Validatedアノテーションでグループ別バリデーションとメソッド検証を実装する方法
Spring Bootの@Validatedを使ってグループバリデーションとService層のメソッドバリデーションを安全に組み込む手順を、@Validとの違いと例外処理まで含めて解説します。
-
Spring Boot @Validアノテーションでバリデーションをシンプルに実装する方法 - 使い方とエラーハンドリング
Spring Boot @Validアノテーションの使い方をコード付きで最短解説。@RequestBodyでの自動検証、@NotBlank/@Email/@Sizeなど主要制約、ネストDTOの再帰検証、@Validatedとの違い、MethodArgumentNotValidExceptionのエラーレスポンス標準化まで実装例で紹介します。
-
Springの@Bean「名前」入門 - いつ付けるべき?どう効く?優先度は?
Spring Bootの@Beanにつける『名前』の役割を実務目線で整理。デフォルトの命名規則(メソッド名=Bean名)、明示名/エイリアスの付け方、@Qualifier・@Primary・パラメータ名の優先度、Bean名の衝突回避、定数化のTipsまでをコード例つきで解説します。
-
Spring Bootにおける@Configuration / @Beanって何? @Componentとの違いと使い方を解説
Spring Bootの@Configurationと@Beanの違い、@Componentとの使い分けを実例で解説。外部ライブラリのBean登録、@Beanメソッドの引数注入、CGLIBプロキシ挙動、テストでの差し替え方まで判断基準付きで整理します。
-
はじめてのSpring Boot Actuator入門
spring-boot-starter-actuatorの導入から、health/info/metricsエンドポイントの公開設定、最小application.yml、Prometheus連携、本番向けの安全な公開構成までを実例で解説。Spring Boot Actuatorを初めて触る人向けにやさしくまとめました。
-
Spring BootのREST APIで統一的なエラーレスポンスを返す方法 - @ControllerAdviceと@ExceptionHandlerの使い方(@RestControllerAdvice / ResponseEntityExceptionHandler対応)
Controllerごとにエラーレスポンスがバラバラで困っていませんか?Spring BootのREST APIで@ControllerAdvice・@RestControllerAdvice・@ExceptionHandlerを使い、バリデーションエラー・業務エラー・システムエラーを統一JSONで返す実装を解説。ResponseEntityExceptionHandlerを継承してSpring MVC標準例外も統一フォーマット化する設計パターンとコード例を紹介します。
-
Spring Bootで@Scheduledアノテーションを使おう
Spring Bootの@Scheduledの使い方を実例で解説。fixedRate/fixedDelay/cronの違い、タイムゾーン指定、よくある落とし穴(重複実行・例外停止)と対策まで初心者向けに整理します。
-
Spring Bootにおける@Componentって何? @Beanとの違いと使い方を解説
Spring Bootの@Componentとは何かを初心者向けに解説。@Beanとの違い、使い分けの判断基準、@Service/@Repositoryとの関係、コンストラクタインジェクションを含む実務での使い方をコード例付きで説明します。
-
Spring Boot Starterって何?
Spring Boot Starterの役割と仕組みを初心者向けに解説。spring-boot-starter-webなど主要Starterの選び方、依存関係管理が楽になる理由、よくある注意点まで分かりやすく紹介します。
-
Spring AOPとは?仕組みと使い方をサンプルコード付きで解説
Spring AOP(アスペクト指向プログラミング)の仕組みをわかりやすく解説。ログ出力や権限チェックなどの共通処理を業務ロジックから分離する方法を、Spring Bootでの設定手順とサンプルコード付きで紹介します。
-
Spring BootのDI(依存性注入)とは?仕組み・書き方・メリットを解説【初心者向け】
Spring BootのDI(依存性注入)を初心者にもわかりやすく解説。なぜ new ではダメなのか、コンストラクタインジェクションの書き方、テストが書きやすくなる・実装を差し替えられる・無駄なインスタンスが増えないといった具体的なメリットを、サンプルコード付きで整理します。
-
SpringとSpring Bootの違いとは?設定・起動・依存関係を比較して解説
SpringとSpring Bootの違いを、設定量・依存関係の管理・起動方法の3つの観点で具体的に比較。「どちらから始めるべきか」「実務ではどう選ぶか」まで、初心者にもわかりやすく解説します。
-
業務システム開発でSpring Bootがよく使われるのはなぜ?
業務システムでSpring Bootが選ばれる理由を、開発速度・保守性・運用性の観点で解説。向いている案件と向かない案件、導入前チェックポイントまで実務目線で整理します。