Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
1
これから始める
SpringのWebアプリケーション
2017/11/24
日本Springユーザ会
土岐 孝平
自己紹介
• 土岐 孝平
• Springを使用したシステム開発の支援
• JavaやSpringの研修の講師
• 書籍の執筆
2
[改訂新版]Spring入門
はじめに
• 発表の趣旨
– Springを使ったことがない人が、Springを使用したWebア
プリケーションのイメージを掴み、独学するとっかかりを得
る
• 想定する前提知識
– 新人研修などで、Javaを使って簡単なWebアプリケーショ
...
アジェンダ
• Webアプリケーションの設計
• Springの役割
• サンプルプログラム
• Spring Bootで動かす
4
Webアプリケーションとは?
• (大雑把にいうと)ブラウザで操作するアプリケーション
– Amazon、インターネットバンキング...
– ブラウザとサーバがHTTPで通信
– 業務的なデータはデータベースに保存
– HTMLで画面を表示
5...
Webアプリケーションの設計~MVC
• MVCパターン
– 画面周りのプログラムの設計の考え方
– Model:業務的なロジック・データ
– View:画面(HTMLデータの生成)
– Controller:リクエストからレスポンスまでの流れ...
Webアプリケーションの設計~レイヤー
• レイヤー(層)
– プログラムを層として分割する考え方
• 上位の層のプログラムが下位の層のプログラムに依存する(使用する)
– Webアプリの一般的な層
• プレゼンテーション層:画面周りの処理
•...
処理の流れ
8
ブラウザ データベース
アジェンダ
• Webアプリケーションの設計
• Springの役割
• サンプルプログラム
• Spring Bootで動かす
9
JavaのWebアプリ
• Javaが標準で用意するAPI
– Servlet、JDBC、・・・
• プログラムや設定ファイルの記述が冗長で面倒
10
ブラウザ データベース
サーバ(Tomcatなど)
Servlet JDBC
Webアプリ
SpringのWebアプリ
• Java標準のAPIをラップして、より簡単にWebアプリ
を作るための仕組みを提供
11
ブラウザ データベース
サーバ(Tomcatなど)
Servlet
Spring
JDBC
Webアプリ
Springの役割(1/2)
• 面倒で冗長な部分をSpringがやってくれる
– データベース周り
• リソースの取得・解放、トランザクション制御、例外処
理...
– 画面周り
• リクエストとControllerの紐付、入力チェック......
• サーバの起動と同時に、(リクエストを受付けるために)必要なオブジェクト
を生成し、オブジェクト同士を紐づけてくれる(依存するオブジェクトをフィ
ールドに代入してくれる<Dependency Injection>)
– 通常は、Control...
アジェンダ
• Webアプリケーションの設計
• Springの役割
• サンプルプログラム
• Spring Bootで動かす
14
サンプルプログラム
• 題材
– 書籍の一覧をブラウザで表示
15
book(書籍)
id(ID)
title(タイトル)
auther(著者)
publish_date(発売日)
price(値段)
【データベースのテーブル】
登場するプログラム
16
≪Controller≫
BookController
≪Service≫
BookService
≪Dao≫
BookDao
≪View≫ ※
bookList.html
≪Entity≫
Book
※テンプレートエ...
処理の流れ
17
ブラウザ データベース
≪Entity≫Book
18
※残りのGetter、Setterは省略しています
≪Dao≫BookDao
19
ステレオタイプアノテーション
(Beanの登録を指示するアノテーション)
インジェクションを指示するアノテーション
DBアクセスを簡易に行えるBean
(Springが提供)をインジェクション
【補足】今どきのインジェクション
20
コンストラクタインジェクション。
バージョン4.3からは、
@Autowiredを省略可能
フィールドをfinalにすることで、
コンストラクタ呼出し後に、
中身を変更できないようにする
≪Service≫BookService
21
ステレオタイプアノテーション
トランザクション制御の指示
Daoをインジェクション
≪Controller≫BookController
22
Serviceをインジェクション
ステレオタイプアノテーション
「books」という名前で
検索結果を格納
≪View≫bookList.html
23
※Thymeleafのテンプレートファイル
処理の流れ
24
ブラウザ データベース
アジェンダ
• Webアプリケーションの設計
• Springの役割
• サンプルプログラム
• Spring Bootで動かす
25
動かすために必要なこと
• サーバのインストール
– Tomcatなどのサーバをインストール
• 裏方のBeanの設定
– トランザクションマネージャ、データソース、
JdbcTemplate、etc...
26
手軽に動かすことができない
Spring Bootの紹介
• Springをより便利にするプロダクト
• 主な特徴
– サーバのインストールをしなくてもWebアプリを起動でき
る(Tomcatが内蔵されている)
– 裏方のBeanの設定を自動で行ってくれる
• 「オートコ...
Spring Bootを利用するために必要なこと
• ライブラリのダウンロード
– Maven※の設定ファイル(pom.xml)で「spring-boot-starter-xxx」のア
ーティファクトをいくつか指定
– 必要なライブラリがまとめ...
pom.xml
29
※少し簡略化しています
各種アーティファクトの
バージョンなどが
定義されている
データアクセス周りの
様々なアーティファクトが
定義されている
画面周りの
様々なアーティファクトが
定義されている
mainメソッドを持つクラス
30
オートコンフィグレーションを
有効にするなどの意味を持つ
runメソッドを実行
mainメソッドを実行すれば、
Tomat&DIコンテナが起動して、
必要なBeanが生成・関連づけられて、
Webアプリが利用...
ソースの雛形をダウンロードできる
• SPRING INITIALIZR
– pom.xmlとmainのクラスを生成してくれるサイト
31
データベースについて(1/2)
• 手軽に開発する際は、組込データベースが便利
– データベースのインストールが不要
– 「H2」という製品が有名
• Spring BootでWebアプリを起動するとH2の管理画面が自動で使える
– https...
データベースについて(2/2)
• DDLや初期データのスクリプト
– クラスパスのルートに、「schema.sql」「data.sql」という名前でスクリ
プトを配置すると、Webアプリ起動時に自動で実行される。
33
【schema.sql...
デモ
34
さいごに
• このあとのハンズオンに参加しましょう
– Hello Worldレベルのハンズオンなので、本セッションが難しかったという方も
心配ありません。
• 自宅で試してみましょう
– 本セッションのサンプルプログラム
• https://...
36
ご清聴ありがとうございました
その他リソース
• Spring Bootのオートコンフィグレーションの説明
– https://docs.spring.io/spring-
boot/docs/current/reference/htmlsingle/#using-boot...
38
ライセンスについて
• JSUGマスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれを元にした派生
作品)の複製・頒布・表示・上演を認めます。
• 非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒...
Upcoming SlideShare
Loading in …5
×

これから始めるSpringのwebアプリケーション

Spring Fest 2017の発表資料

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

これから始めるSpringのwebアプリケーション

  1. 1. 1 これから始める SpringのWebアプリケーション 2017/11/24 日本Springユーザ会 土岐 孝平
  2. 2. 自己紹介 • 土岐 孝平 • Springを使用したシステム開発の支援 • JavaやSpringの研修の講師 • 書籍の執筆 2 [改訂新版]Spring入門
  3. 3. はじめに • 発表の趣旨 – Springを使ったことがない人が、Springを使用したWebア プリケーションのイメージを掴み、独学するとっかかりを得 る • 想定する前提知識 – 新人研修などで、Javaを使って簡単なWebアプリケーショ ンを作ったことがある 3
  4. 4. アジェンダ • Webアプリケーションの設計 • Springの役割 • サンプルプログラム • Spring Bootで動かす 4
  5. 5. Webアプリケーションとは? • (大雑把にいうと)ブラウザで操作するアプリケーション – Amazon、インターネットバンキング... – ブラウザとサーバがHTTPで通信 – 業務的なデータはデータベースに保存 – HTMLで画面を表示 5 ブラウザ サーバ Webアプリ データベース 例)商品データ、 注文データ <html> ・・・ </html> HTTP通信 SQL 取得データ、 保存結果 リクエスト レスポンス
  6. 6. Webアプリケーションの設計~MVC • MVCパターン – 画面周りのプログラムの設計の考え方 – Model:業務的なロジック・データ – View:画面(HTMLデータの生成) – Controller:リクエストからレスポンスまでの流れを制御 6 ブラウザ データベース Controller View Model ①リクエスト ②業務ロジック呼出 ③View呼出 ④業務データを参照 ⑤レスポンス(HTML)
  7. 7. Webアプリケーションの設計~レイヤー • レイヤー(層) – プログラムを層として分割する考え方 • 上位の層のプログラムが下位の層のプログラムに依存する(使用する) – Webアプリの一般的な層 • プレゼンテーション層:画面周りの処理 • サービス層:業務ロジック • データアクセス層:データアクセス(SQL実行)の処理 7 プレゼンテーション層 サービス層 データアクセス層 Controller Service (業務ロジック) Dao (データアクセス) ブラウザ View Entity (業務データ) データベース 依存の方向 Modelに該当
  8. 8. 処理の流れ 8 ブラウザ データベース
  9. 9. アジェンダ • Webアプリケーションの設計 • Springの役割 • サンプルプログラム • Spring Bootで動かす 9
  10. 10. JavaのWebアプリ • Javaが標準で用意するAPI – Servlet、JDBC、・・・ • プログラムや設定ファイルの記述が冗長で面倒 10 ブラウザ データベース サーバ(Tomcatなど) Servlet JDBC Webアプリ
  11. 11. SpringのWebアプリ • Java標準のAPIをラップして、より簡単にWebアプリ を作るための仕組みを提供 11 ブラウザ データベース サーバ(Tomcatなど) Servlet Spring JDBC Webアプリ
  12. 12. Springの役割(1/2) • 面倒で冗長な部分をSpringがやってくれる – データベース周り • リソースの取得・解放、トランザクション制御、例外処 理... – 画面周り • リクエストとControllerの紐付、入力チェック... – その他 • 認証・認可、キャッシュ、トレースログ... 12 開発者は、 業務的な部分に注力できる
  13. 13. • サーバの起動と同時に、(リクエストを受付けるために)必要なオブジェクト を生成し、オブジェクト同士を紐づけてくれる(依存するオブジェクトをフィ ールドに代入してくれる<Dependency Injection>) – 通常は、Controller・Service・Daoを生成し、紐づけてもらう • Springが生成したオブジェクトは、DIコンテナで管理され、さまざまな機能 を付加できる DIコンテナ Springの役割(2/2) 13 Controller Service Dao データベースブラウザ AOPを使って処理を挟み こむ 処理を付加することがで きる (トランザクション制 御、トレースログ...) DIコンテナで管理されて るオブジェクトを「Bean」と 呼ぶ
  14. 14. アジェンダ • Webアプリケーションの設計 • Springの役割 • サンプルプログラム • Spring Bootで動かす 14
  15. 15. サンプルプログラム • 題材 – 書籍の一覧をブラウザで表示 15 book(書籍) id(ID) title(タイトル) auther(著者) publish_date(発売日) price(値段) 【データベースのテーブル】
  16. 16. 登場するプログラム 16 ≪Controller≫ BookController ≪Service≫ BookService ≪Dao≫ BookDao ≪View≫ ※ bookList.html ≪Entity≫ Book ※テンプレートエンジンは Thymeleafを使用 ブラウザ データ ベース
  17. 17. 処理の流れ 17 ブラウザ データベース
  18. 18. ≪Entity≫Book 18 ※残りのGetter、Setterは省略しています
  19. 19. ≪Dao≫BookDao 19 ステレオタイプアノテーション (Beanの登録を指示するアノテーション) インジェクションを指示するアノテーション DBアクセスを簡易に行えるBean (Springが提供)をインジェクション
  20. 20. 【補足】今どきのインジェクション 20 コンストラクタインジェクション。 バージョン4.3からは、 @Autowiredを省略可能 フィールドをfinalにすることで、 コンストラクタ呼出し後に、 中身を変更できないようにする
  21. 21. ≪Service≫BookService 21 ステレオタイプアノテーション トランザクション制御の指示 Daoをインジェクション
  22. 22. ≪Controller≫BookController 22 Serviceをインジェクション ステレオタイプアノテーション 「books」という名前で 検索結果を格納
  23. 23. ≪View≫bookList.html 23 ※Thymeleafのテンプレートファイル
  24. 24. 処理の流れ 24 ブラウザ データベース
  25. 25. アジェンダ • Webアプリケーションの設計 • Springの役割 • サンプルプログラム • Spring Bootで動かす 25
  26. 26. 動かすために必要なこと • サーバのインストール – Tomcatなどのサーバをインストール • 裏方のBeanの設定 – トランザクションマネージャ、データソース、 JdbcTemplate、etc... 26 手軽に動かすことができない
  27. 27. Spring Bootの紹介 • Springをより便利にするプロダクト • 主な特徴 – サーバのインストールをしなくてもWebアプリを起動でき る(Tomcatが内蔵されている) – 裏方のBeanの設定を自動で行ってくれる • 「オートコンフィグレーション」と呼ぶ 27 手軽に動かすことができる
  28. 28. Spring Bootを利用するために必要なこと • ライブラリのダウンロード – Maven※の設定ファイル(pom.xml)で「spring-boot-starter-xxx」のア ーティファクトをいくつか指定 – 必要なライブラリがまとめてダウンロードされる • mainメソッドを持つクラスを作成 – @SpringBootApplicationを付ける • オートコンフィグレーションを有効にするなどの意味合いを持った アノテーション • mainメソッドを作ってSpringApplicationクラスのrun メソッドを呼出す – 引数で@SpringBootApplicationを付けたクラスを指定 28 ※依存する(使用する)ライブラリを管理できるツール。 アーティファクトという単位でライブラリが管理されている。
  29. 29. pom.xml 29 ※少し簡略化しています 各種アーティファクトの バージョンなどが 定義されている データアクセス周りの 様々なアーティファクトが 定義されている 画面周りの 様々なアーティファクトが 定義されている
  30. 30. mainメソッドを持つクラス 30 オートコンフィグレーションを 有効にするなどの意味を持つ runメソッドを実行 mainメソッドを実行すれば、 Tomat&DIコンテナが起動して、 必要なBeanが生成・関連づけられて、 Webアプリが利用可能になる
  31. 31. ソースの雛形をダウンロードできる • SPRING INITIALIZR – pom.xmlとmainのクラスを生成してくれるサイト 31
  32. 32. データベースについて(1/2) • 手軽に開発する際は、組込データベースが便利 – データベースのインストールが不要 – 「H2」という製品が有名 • Spring BootでWebアプリを起動するとH2の管理画面が自動で使える – https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features- sql.html#boot-features-sql-h2-console 32 【URL】http://localhost:8080/h2-console 【DBのURL】jdbc:h2:mem:testdb 【ユーザ】sa 【パスワード】(空白)
  33. 33. データベースについて(2/2) • DDLや初期データのスクリプト – クラスパスのルートに、「schema.sql」「data.sql」という名前でスクリ プトを配置すると、Webアプリ起動時に自動で実行される。 33 【schema.sql】 【data.sql】
  34. 34. デモ 34
  35. 35. さいごに • このあとのハンズオンに参加しましょう – Hello Worldレベルのハンズオンなので、本セッションが難しかったという方も 心配ありません。 • 自宅で試してみましょう – 本セッションのサンプルプログラム • https://goo.gl/S9Hmy3 • ダウンロードして解凍後、EclipseなどのIDEでMavenプロジェクトとして インポート – あとはプロジェクト内の「ReadMe.txt」を参照 • 基本をきちんと勉強しましょう – SlideShare「今さら聞けないDIとSpring」 • https://www.slideshare.net/KouheiToki/dispring – 書籍 • [改訂新版]Spring入門(技術評論社) • Spring徹底入門(翔泳社) 35
  36. 36. 36 ご清聴ありがとうございました
  37. 37. その他リソース • Spring Bootのオートコンフィグレーションの説明 – https://docs.spring.io/spring- boot/docs/current/reference/htmlsingle/#using-boot- auto-configuration • Thymeleafのマニュアル – http://www.thymeleaf.org/doc/tutorials/2.1/usingthyme leaf.html 37
  38. 38. 38 ライセンスについて • JSUGマスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれを元にした派生 作品)の複製・頒布・表示・上演を認めます。 • 非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・上演を認めます。 • 本作品のライセンスを遵守する限り、派生作品を頒布することを許可します。

×