おじさん
SpringBootの研修本で
学んだこと
1
目次
・Spring Bootとは
・プログラム紹介1
・プログラム紹介2
・まとめ
2
Spring Bootとは:
概要
・Spring Frameworkによる開発を素早く、簡単に行えるようにする
・Spring Frameworkは機能が多い
・環境構築や設定が大変
・面倒な作業を簡略化するためのフレームワーク
3
Spring Bootとは:
Spring Framework
Spring Framework:
・Javaのアプリ開発に必要な機能や処理をまとめたフレームワーク
・DIやアスペクト指向を導入
・オープンソースであり、拡張されて様々な機能がある
Spring Data、Spring Web、Spring Boot等
4
Spring Bootとは:
Spring Framework
Spring Web:
・Webアプリを作る時のベースとなるフレームワーク
「Spring Web MVC」 「Spring WebFlux」等
Spring Data:
・データベースアクセスに関するフレームワーク
「Spring Data JPA」「Spring Data JDBC」
5
Spring Bootとは:
MVCモデル
・ソフトウェアの設計の考え方
・Model、View、Controllerという要素に分ける
・Webアプリ開発で使用されることが多い
・プログラムの構成がわかりやすく
・変更に強くなる
・無駄なコンパイルが減る
6
Spring Bootとは:
MVCモデル
Model:
・データベースへの入出力や操作を担当する
View:
・ユーザ入力の受付や画面への出力を担当する
Controller:
・ViewとModelを管理する
・リクエストに応じて、Modelからデータを取り出し、Viewに反映させる
7
Spring Bootとは:
MVCモデル
8
プログラム1
使用した機能
Thymeleaf:
・Javaのテンプレートエンジン
・HTMLに付け足すような形で処理を書ける
・MVCのView
JPA:
・オブジェクトをデータベースに保存したり、
・データベースからJavaのオブジェクトを作ったりといった操作を提供するもの
・MVCのModel
H2 Database:
・Javaで製作されたオープンソースのSQLデータベースを扱うライブラリ
・メモリ上やファイルにデータベースを保存できる
9
プログラム1
機能の追加
・pom.xmlの<dependencies> タグを編集
・<dependency>タグを追加
10
プログラム1
プログラム概要
・JavaのプログラムからHTMLを書き換えるプログラム
・spring Tool Suite4を使用(Spring開発用のIDE)
プログラムの構成:
・MyBootAppDataApplication.java ←アプリの開始処理
・MainController.java ←コントローラの処理
・index.html ←Webアプリで表示するページ
11
プログラム1
アプリの開始処理
12
プログラム1
アプリの開始処理
@SpringBootApplication:
@EnableAutoCon
fi
guration、@Con
fi
guration、@ComponentScanの組み合わせ
Springのアプリを動かすのに必要な設定を自動でおこなってくれる
SpringApplication.run():
アプリを起動するメソッド
@SpringBootApprication(@EnableAutoCon
fi
guration)のついたクラスを指定する
13
プログラム1
コントローラの処理
14
プログラム1
コントローラの処理
@Controller:
クラスをコントローラとして定義
インスタンス化はSpringBootがやってくれる
@RequestMapping:
リクエストに対して実行するメソッドの指定
value:処理を実行するページ
method:リクエストの種類を設定する
15
プログラム1
コントローラの処理
ModelAndView:
ModelとViewの情報を管理できる型
mav.setViewName("ページ名"):
使用するViewの名前を指定する
mav.addObject("オブジェクト名", データ):
Viewに渡すデータを追加
「msg」というオブジェクトを作成、「AAA」という値を追加
16
プログラム1
Webアプリで表示するページ
17
プログラム1
Webアプリで表示するページ
xmlns:th="URL":
xmlns:XMLの名前空間の指定。
要素名等の衝突を避けるためのもの。
th:text=“${オブジェクト}":
${式} (EL式)でオブジェクトにアクセス
th:textでオブジェクトをテキストとして出力
タグの中の文字は無視される
h
18
主な流れ
・Springのアプリとして起動するように設定
・コントローラでGETリクエストを受け取る
・ビューにmsgという名前でデータ(AAA)を渡す
・ビュー(Tymeleaf)が受け取ったデータを、
HTML内の名前が一致するところに追加
・ページを表示
19
プログラム1
実行結果
20
プログラム2
プログラム概要
データベースにデータを保存、Viewに渡して表示するプログラム
プログラム構成:
・MyBootAppDataApplication.java
・TestEntity.java ←保存するデータ
・TestRepository.java ←データベースの操作
・MainController.java ←コントローラの処理
・index.html ←Webアプリで表示するページ
21
プログラム2
保存するデータ
22
プログラム2
@Entity:
クラスをエンティティとして扱えるようにする
エンティティ:
データベースのテーブルに保存するデータ
@Table(name = "test̲table"):
使用するテーブル名を指定する
省略するとクラス名がそのまま使われる
@Id:
主キーの設定をする
@Column(name = "", length = , nullable = ):
カラムの設定
名前、最大長(文字数)、nullを許可するか
保存するデータ
23
プログラム2
データベースの操作
24
プログラム2
データベースの操作
interface:
インターフェース
抽象メソッドと定数だけを定義したもの
JpaRepository:
JPAでデータベースにアクセスするためのもの
extends:
継承
クラスの変数や関数をひきつぐ
クラス<T>:
ジェネリクス
いろいろな形を入れられるようになる
25
プログラム2
コントローラの処理
26
@Autowired
TestRepository repos:
自動でインスタンスを割り当てる
TestRepositoryのインスタンスをSpringBoot側が用意してくれる
@Transactional:
データベースの操作を一括でおこなう指定
repos.saveAndFlush(エンティティ):
エンティティのインスタンスをデータベースに保存し、更新するメソッド
repos.
fi
ndAll():
データを全て取得するメソッド
プログラム2
コントローラの処理
27
プログラム2
Webアプリで表示するページ
28
プログラム2
Webアプリで表示するページ
th:each="変数 : ${オブジェクト名}":
渡されたオブジェクトの個数分、
そのタグを繰り返して処理
変数は繰り返してく中で次のオブジェクトが入る
th:text="${obj.data}":
th:eachでobjと名前をつけたオブジェクトにアクセス
その中のdataの値をテキストとして取得
29
プログラム2
主な流れ
・データベースに登録するデータのクラスを作成
・データベースの操作用クラスを作成
・コントローラでリクエストを受け取ったら
・エンティティ(TestEntity)を作成し、データ(1111、2222)を持たせる
・リポジトリでデータベースにデータを保存
・リポジトリから保存したデータを取得し、ビューにデータをdataという名前で渡す
・ビューがデータを受け取り、データの個数分 h1タグを繰り返す
・h1タグはデータの中身(1111、2222)をテキストに変換する
・ページを表示
30
プログラム2
実行結果
31
まとめ:
・Spring Bootについて
・Javaのフレームワーク
・Spring Frameworkの開発を簡単に
・簡単なプログラムを紹介
Spring Bootを使えば
・WebアプリをMVCで作れる
・画面の処理やデータベースとの連携も簡単
・アプリの処理を書くことに集中できる
・開発が楽に
32

SpringBootの研修本で学んだこと