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