Spring Boot について
Spring Boot は、Spring Framework をベースに、依存関係管理や設定を自動化して開発を簡単にするフレームワークです。
Spring Boot 自体は Spring Framework を便利に使えるようにした拡張版のようなもので、一般的にはレイヤードアーキテクチャで利用されることが多いです。
一方、Spring Framework は Java アプリケーション開発全般を支援する総合的なフレームワークです。
パッケージ構成
よくある以下のようなパッケージ構成には、以下のようなものがあります。(これは慣習的な分け方であって、必須ではない)
src/main/java/com/example/demo/
├─ DemoApplication.java ← 起動クラス(@SpringBootApplication)
├─ controller/ ← Web層(@Controller, @RestController)
├─ service/ ← ビジネスロジック層(@Service)
├─ repository/ ← 永続化層(@Repository, JpaRepository)
├─ entity/ ← DBエンティティ(@Entity)
├─ dto/ ← DTO(画面/API用データ)
└─ config/ ← 設定クラス(@Configuration, Security, etc.) フレームワークの種類
- Spring Framework
- フレームワーク全体の名前。中核の部分をしめすこともある
- Spring AOP
- Spring Framework に含まれる
- Spring MVC
- Mode-View-Controllerアーキテクチャーによるウェブアプリケーションを構築
- Spring Boot
- 主にSpring MVC を使ってウェブアプリケーションを高速開発します
- Spring Data
- データベースへアクセスするためのフレームワーク
- Spring Cloud
- 分散システム構築のためのツールを提供
- Spring Cloud Data Flow
- Spring Cloud によるマイクロサービスによって構成
- Spring Security
- ウェブのセキュリティ機能を提供するフレームワーク
- Spring Web Service
- RESTfulなウェブサービスを構築するためのフレームワーク
- Spring Batch
- 大量のバッチ処理を最適化するための機能を提供
- Spring Shell
- シェルプログラム(コマンドラインプログラム)作成のフレームワーク
- Spring Mobile
- モバイル向けウェブアプリケーション構築のためのフレームワーク
- Spring Social
- ソーシャルサービス利用のためのライブラリ
- Spring Integration
- エンタープライズアプリケーション統合のためのフレームワーク
- Spring Web Flow
- ウェブアプリケーションの画面遷移を管理するフレームワーク
- Spring Session
- ユーザーセッション情報を管理するためのAPIを提供
pom.xml
pom.xml は Maven プロジェクトで使われる設定ファイル です。
Javaのプロジェクトで必要な依存関係やビルド情報、バージョン管理などをまとめて定義するXMLファイルです。
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
</dependency> 上記のようにした場合、以下のようになります。
- ビルド時(mvn clean install や IDEでのプロジェクト同期)に、Maven中央リポジトリから MariaDBのJDBCドライバのJARファイル をダウンロード。
- ダウンロードされたJARは ローカルリポジトリ に保存され、プロジェクトで使えるようになる。
- Spring Bootで spring.datasource.driver-class-name=org.mariadb.jdbc.Driver を設定すれば、自動でMariaDBに接続可能。
Spring Boot で application.yml と application.properties のどちらを使うか
application.properties の特徴
- シンプルなキー=値形式
- 小規模プロジェクトや設定が少ない場合に向く
- 誰でも見慣れている形式(従来の Spring Framework からの延長)
- YAML のインデントミスで悩むことがない
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=pass application.yml の特徴
- 階層構造を自然に表現できる
- 複雑な設定(DataSource 複数設定、環境ごとの設定など)が見やすい
- 可読性が高く、設定ファイルが長くなっても整理しやすい
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/testdb
username: root
password: pass
profiles:
active: dev
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.entity