WEB+DB PRESS Vol.106の「速習 Spring Boot」を読んだ
Spring Framework に入門2日め、という位置づけ。
前回
の最後にもあった通り、最近の WEB+DB PRESS でちょうど Spring Boot 特集があったようなので読んだ。
感想
前回、Spring Framework や Spring Boot について苦労しながら公式ドキュメントを漁った経験からすると
これから Spring Framework に入門する人が最初に目を通しておく本としてとても良いのではないかと思いました。
第1章では Spring Framework とはなにか、から始まり、Spring Boot の特徴や Spring Framework との関係性について順を追って説明されています。
第2章では Spring Boot の基本的な構成や各用語の説明があり、第3, 4章で2つのサンプルアプリを実際に作ります。
最後の第5章では作成したアプリを本番環境で運用するための Tips として、Vagrant による仮想環境を使ったアプリ構築手順や、本番稼働しているアプリのヘルスチェック、バージョン管理方法などが紹介されています。
おすすめの読み方
第3章と第4章で作るアプリの差はそれほど多くない (外部の API を使用する & 定期実行する方法) のと、時間がなければまずは第3章のアプリだけ手を動かしてみるのでも十分だと思います。
また第5章に書かれている内容は IaaS などのサーバーに構築する際の知識なので、Heroku などの PaaS で動かしたいと考えている場合はとりあえずスキップでも問題ないかと。
ただし、第3, 4章で構築したアプリの実行手順は第5章の前半に書かれているのでそこだけ注意。
ソースコード
本書のサポートページ からダウンロードできるほか、自分でも写経したものを前回と同じリポジトリに上げておきます。
https://github.com/zaki-yama/spring-framework-study/tree/master/wdpress106-spring-boot
この書籍で学べること/学べないこと
学べること
- Spring Framework, Spring Boot とはなにか
- Spring Boot の全体構成
- 以下の用語に対するざっくりとした理解
- 基本的なアプリの作り方
- ビルドしたアプリの起動方法、実際のサーバーで運用するために必要な手順
学べないこと
- Maven, Gradle の使い方、設定ファイルの書き方
サンプルアプリは Maven で書かれています。
私は Gradle で書いたので、同じように Gradle でやりたいという方は ↑の GitHub のコードが参考になれば。
また、今回は STS (Spring Tool Suite) という IDE を使って開発を進める想定で、新規プロジェクトのひな形に Maven の設定ファイルも含まれるため、中身について詳しい説明はありません。 (なお、Spring Initializr というツールを使えば IDE を使わなくてもひな形を生成できるため、好きなエディタで開発することは可能です)
- Spring Boot の各アノテーションが何をやっているかの詳細
一部を除いて、各アノテーションの実際の処理までは説明されていません。
「こういう責務のクラスに対してこういうアノテーションをつけるんだー」とおまじない的に覚える感じです。
- 実際のデータベースを使ってデータを永続化する方法
サンプルでは H2 というデータベースを使い、アプリをシャットダウンするとデータは削除されます。
データベースにデータを保存するために必要な手順については触れられていませんでした。
学習メモ
第1章
- Spring Boot の特徴
第2章
- コントローラー、サービス、リポジトリなどを「コンポーネント」とみなし、これらコンポーネントを組み合わせてアプリを作るイメージ
- Spring Data: データベース(Spring Boot では「データストア」として扱う) を操作するためのプロジェクト
- H2 Database(H2DB): MySQL, PostgreSQL などと同じく RDB 系のデータベース
- JPA: Java Persistence API の略。永続化に関する仕様
- Spring Data JPA: JPA の仕様をサポートした O/R マッピングフレームワーク
- ドメイン
- リポジトリ
- ドメインをデータベースに永続化する処理を制御する
- サービス
- ビジネスロジックを処理し、処理した結果を次に出てくるコントローラに届ける
- コントローラ
- ユーザーのリクエストに応じてルーティングを行う
リポジトリ、サービス、コントローラは対応するアノテーションが提供されている。 クラスに対してアノテーションを付与することで、Spring Boot が自動的に Bean として登録する。 (従来の Spring Framework ではXML で行っていた部分)
- テンプレートエンジン(Thymeleaf)
- ビュー機能を実現するテンプレートエンジンとして FreeMaker/Groovy/Thymeleaf/Mustache をサポートしている。
第3, 4章
Gradle で依存追加
- org.webjars とは
- クライアントサイドのライブラリを依存解決できるようにしたもの
- ので、バージョンの指定が必須
dependencies {
implementation('org.webjars:bootstrap:4.1.0')
}
指定しないと以下のエラーが出る。
> Could not find org.webjars:bootstrap:. Required by: project :
@SpringBootApplication
の内部は以下の3つのアノテーションを持っている
@EnableAutoConfiguration
- Spring Boot の自動設定項目を行うアノテーション
@ComponentScan
@Component
(@Controller / @Service / @Repository
など) の読み取りを行うアノテーション
@Configuration
- 設定を許可し、Bean を登録できるようにするアノテーション
@JsonProperty
は Java のフィールド名と(API のレスポンスにおける) JSON のキー名を変換するために用いる
次やろうと思ってること
初回から変わらず、公式チュートリアルのこれをやろうと思っています。