Java SpringBoot フレームワーク
SpringBoot は Spring フレームワークの拡張プロジェクトであり、Spring アプリケーションの初期構築と開発プロセスを簡素化することを目的としています。
SpringBoot は「設定より規約」という理念により、開発者が Spring アプリケーションを迅速に起動して実行できるようにします。
SpringBoot のコア特徴
- 自動構成:プロジェクトに追加された jar 依存関係に基づいて Spring アプリケーションを自動構成します
- 独立実行:Tomcat、Jetty、Undertow などのサーバーを内蔵しており、WAR ファイルをデプロイする必要がありません
- 依存関係管理の簡素化:スターター依存関係を通じて Maven/Gradle の設定を簡素化します
- プロダクション対応:メトリクス、ヘルスチェック、外部化設定などの機能を提供します
- コード生成不要:XML 設定が不要です
SpringBoot のコアコンポーネント
1. SpringBoot Starter
SpringBoot Starter は便利な依存関係記述子のセットで、必要なすべてのテクノロジーをワンストップで取得できます。例:
spring-boot-starter-web:Web アプリケーションの構築用spring-boot-starter-data-jpa:JPA データベースアクセス用spring-boot-starter-test:テスト用
2. SpringBoot AutoConfiguration
SpringBoot は classpath 内の jar パッケージに基づいてアプリケーションを自動構成します。例えば、classpath に H2 データベースがある場合、SpringBoot は自動的にインメモリデータベースを構成します。
3. SpringBoot Actuator
本番環境向けの機能を提供し、アプリケーションの監視と管理を支援します:
- アプリケーションのヘルスチェック
- メトリクス収集
- HTTP トレース
- 環境情報
最初の SpringBoot アプリケーションを作成する
1. Spring Initializr を使用してプロジェクトを作成する
アクセスするstart.spring.io、以下を選択します:
- Maven プロジェクト
- Java 言語
- 最新の SpringBoot バージョン
- "Web" 依存関係を追加
2. プロジェクト構造
典型的な SpringBoot プロジェクト構造:
src/
main/
java/
com/example/demo/
DemoApplication.java # 主启动类
resources/
application.properties # 配置文件
test/
java/
com/example/demo/
DemoApplicationTests.java # 测试类
3. 簡単な REST コントローラーを作成する
例
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, SpringBoot!";
}
}
4. アプリケーションを実行する
実行するDemoApplicationクラス内のmainメソッドを実行すると、アプリケーションはデフォルトポート 8080 で起動します。
アクセスするhttp://localhost:8080/api/helloすると、返された "Hello, SpringBoot!" メッセージが表示されます。
SpringBoot の設定
1. 設定ファイル
SpringBoot は複数の設定方法をサポートしています:
application.propertiesapplication.yml- 環境変数
- コマンドライン引数
例application.properties:
例
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
2. マルチ環境設定
環境ごとに異なる設定ファイルを作成できます:
application-dev.properties:開発環境application-prod.properties:本番環境
を通じてspring.profiles.activeアクティブにする環境を指定します:
例
SpringBoot のデータアクセス
1. Spring Data JPA を使用する
依存関係を追加:
例
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
エンティティクラスを定義:
例
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// getters and setters
}
Repository インターフェースを作成:
例
List<User> findByName(String name);
}
サービス層で使用:
例
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> getUsersByName(String name) {
return userRepository.findByName(name);
}
}
SpringBoot のベストプラクティス
- 階層アーキテクチャ:Controller-Service-Repository の階層に従う
- 例外処理:使用する
@ControllerAdviceグローバル例外処理 - ログ記録:SLF4J を使用してログを記録する
- ユニットテスト:ビジネスロジックに対して十分なテストを作成する
- API ドキュメント:Swagger を統合して API ドキュメントを生成する
例:グローバル例外処理
例
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<ErrorResponse> handleResourceNotFound(ResourceNotFoundException ex) {
ErrorResponse error = new ErrorResponse(
"NOT_FOUND",
ex.getMessage()
);
return new ResponseEntity<>(error, HttpStatus.NOT_FOUND);
}
}
SpringBoot の上級トピック
- Spring Security:認証と認可
- Spring Cloud:マイクロサービスアーキテクチャ
- Spring Batch:バッチ処理
- WebFlux:リアクティブプログラミング
- Docker 統合:コンテナ化デプロイ
SpringBoot は設定の簡素化とすぐに使える機能の提供により、Java アプリケーションの開発効率を大幅に向上させました。これは現代の Java 開発に欠かせないフレームワークの1つです。
その他の拡張
Java のよく使うクラスライブラリ