SlideShare a Scribd company logo
Submit Search
Upload
Springを使ったwebアプリにリファクタリングしよう
Report
土岐 孝平
Springの研修、開発支援 at 合同会社 現場指向
Follow
•
1 like
•
6,757 views
1
of
27
Springを使ったwebアプリにリファクタリングしよう
•
1 like
•
6,757 views
Download Now
Download to read offline
Report
Software
Spring Day 2016のハンズオンの座学資料です。
Read more
土岐 孝平
Springの研修、開発支援 at 合同会社 現場指向
Follow
Recommended
これから始めるSpringのwebアプリケーション
土岐 孝平
19.2K views
•
38 slides
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
24.7K views
•
60 slides
Spring超入門-Springと出会ってから1年半-
Ryosuke Uchitate
4.3K views
•
67 slides
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
21.4K views
•
32 slides
今さら聞けないDiとspring
土岐 孝平
24.8K views
•
50 slides
Springを何となく使ってる人が抑えるべきポイント
土岐 孝平
25K views
•
18 slides
More Related Content
What's hot
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
2.9K views
•
39 slides
新規事業「Bill One」による Google Cloud 活用術
Mao Ohnishi
595 views
•
34 slides
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
40K views
•
94 slides
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
65.2K views
•
38 slides
試験にでるSpring
土岐 孝平
5.1K views
•
26 slides
中規模Angularアプリケーションの再設計
bitbank, Inc. Tokyo, Japan
6.9K views
•
33 slides
What's hot
(20)
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
•
2.9K views
新規事業「Bill One」による Google Cloud 活用術
Mao Ohnishi
•
595 views
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
•
40K views
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
•
65.2K views
試験にでるSpring
土岐 孝平
•
5.1K views
中規模Angularアプリケーションの再設計
bitbank, Inc. Tokyo, Japan
•
6.9K views
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
•
138K views
Spring bootでweb 基本編
なべ
•
8.7K views
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
•
19.8K views
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
•
752 views
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
•
8.4K views
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
•
21.8K views
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Kazumi IWANAGA
•
6.8K views
マイクロサービス化に向けて
HIRA
•
1.9K views
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
•
2.6K views
Spring bootでweb ユニットテスト編
なべ
•
13.6K views
ドメイン駆動設計入門
増田 亨
•
28.6K views
Nuxt.jsとExpressでSPA×SSR×API Aggregationを実現した話
Recruit Lifestyle Co., Ltd.
•
8.4K views
AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)
Amazon Web Services Japan
•
1.9K views
実践 NestJS
Ayumi Goto
•
1.2K views
Viewers also liked
Spring bootで学ぶ初めてのwebアプリ開発
terahide
12.7K views
•
43 slides
Spring Day 2016 springの現在過去未来
Yuichi Hasegawa
11.8K views
•
44 slides
Grailsでドメイン駆動設計を実践する時の勘所
Takuma Watabiki
8.7K views
•
68 slides
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Yuichi Hasegawa
9K views
•
44 slides
Lineにおけるspring frameworkの活用
Tokuhiro Matsuno
33.7K views
•
54 slides
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
22.6K views
•
42 slides
Viewers also liked
(20)
Spring bootで学ぶ初めてのwebアプリ開発
terahide
•
12.7K views
Spring Day 2016 springの現在過去未来
Yuichi Hasegawa
•
11.8K views
Grailsでドメイン駆動設計を実践する時の勘所
Takuma Watabiki
•
8.7K views
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Yuichi Hasegawa
•
9K views
Lineにおけるspring frameworkの活用
Tokuhiro Matsuno
•
33.7K views
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
•
22.6K views
楽天トラベルとSpring(Spring Day 2016)
Rakuten Group, Inc.
•
14K views
Cloud Foundry x Wagby
Yoshinori Nie
•
5K views
アメブロの大規模システム刷新と それを支えるSpring
Takuya Hattori
•
40.8K views
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Toshiaki Maki
•
22.3K views
Spring 5に備えるリアクティブプログラミング入門
Takuya Iwatsuka
•
31.9K views
Distributed tracing - get a grasp on your production
nklmish
•
2.2K views
Distributed Tracing Velocity2016
Reshmi Krishna
•
1.7K views
Spring CloudとZipkinを利用した分散トレーシング
Rakuten Group, Inc.
•
7.3K views
Internetトラフィックエンジニアリングの現実
J-Stream Inc.
•
5.1K views
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
tty fky
•
4.3K views
高速なソートアルゴリズムを書こう!!
masakazu matsubara
•
6K views
Javaアプリケーションの モダナイゼーションアプローチ
CData Software Japan
•
1.5K views
Another compilation method in java - AOT (Ahead of Time) compilation
Logico
•
3.6K views
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Hiroshi Ito
•
58.9K views
Similar to Springを使ったwebアプリにリファクタリングしよう
第12回rest勉強会 これまでの補足・展望編
ksimoji
1.6K views
•
68 slides
SpringBootの研修本で学んだこと
iPride Co., Ltd.
46 views
•
32 slides
Spring.project
広平 田村
1.5K views
•
107 slides
Springの今
Kazuyuki Kawamura
2.7K views
•
43 slides
スキトラ Spring + mybatis
小川 昌吾
4.8K views
•
50 slides
Springの向かう先
Kazuyuki Kawamura
1.1K views
•
45 slides
Similar to Springを使ったwebアプリにリファクタリングしよう
(20)
第12回rest勉強会 これまでの補足・展望編
ksimoji
•
1.6K views
SpringBootの研修本で学んだこと
iPride Co., Ltd.
•
46 views
Spring.project
広平 田村
•
1.5K views
Springの今
Kazuyuki Kawamura
•
2.7K views
スキトラ Spring + mybatis
小川 昌吾
•
4.8K views
Springの向かう先
Kazuyuki Kawamura
•
1.1K views
進化する Web ~ Progressive Web Apps の実装と応用 ~
Microsoft Azure Japan
•
644 views
オープニング
konekto
•
354 views
Challenge PWA!! TRY PWA4WP!
Ryu Shindo
•
2.2K views
Spring知っておきたい
Yuichi Hasegawa
•
4K views
UnicastWS vol.2
Unicast Inc.
•
946 views
Lightning componentとlightning design system
Noriko Iwai
•
1.1K views
Challenge PWA!! WordCamp Tokyo 2018
Ryu Shindo
•
4.7K views
Azure Service Fabric 概要
Daiyu Hatakeyama
•
3.9K views
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Masahiko Tachizono
•
14.8K views
Force.com開発基礎
Salesforce Developers Japan
•
4.4K views
JViews Diagrammer チュートリアル (JSF 2)
RWSJapan
•
221 views
[Observability conference 2022/3/11] NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE
Iida Yukako
•
1.1K views
Reco choku tech night #09 -reinvent2018報告会-
recotech
•
482 views
Java web application testing
Tokuhiro Matsuno
•
7.7K views
More from 土岐 孝平
What's new in Spring Boot 2.6 ?
土岐 孝平
1.3K views
•
46 slides
SpringベースのCloud Native Application
土岐 孝平
278 views
•
40 slides
Spring fest2020 spring-security
土岐 孝平
1.3K views
•
22 slides
Microserviceの今どきのインフラを探る
土岐 孝平
653 views
•
20 slides
OpenID Connect入門
土岐 孝平
2K views
•
65 slides
業務システムとマイクロサービス
土岐 孝平
1.4K views
•
13 slides
More from 土岐 孝平
(9)
What's new in Spring Boot 2.6 ?
土岐 孝平
•
1.3K views
SpringベースのCloud Native Application
土岐 孝平
•
278 views
Spring fest2020 spring-security
土岐 孝平
•
1.3K views
Microserviceの今どきのインフラを探る
土岐 孝平
•
653 views
OpenID Connect入門
土岐 孝平
•
2K views
業務システムとマイクロサービス
土岐 孝平
•
1.4K views
エッセンシャルCore springハンズオン
土岐 孝平
•
2.2K views
Spring3.1概要 データアクセスとトランザクション処理
土岐 孝平
•
17.8K views
vFabricを触ろう
土岐 孝平
•
1.7K views
Springを使ったwebアプリにリファクタリングしよう
1.
1 【ハンズオン】 Spring を使った Web
アプリに リファクタリングしよう 2016/11/18 日本 Spring ユーザ会 土岐 孝平
2.
自己紹介 • 土岐 孝平
( とき こうへい ) • Spring を使用したシステム開発の支援 • Java や Spring の研修の講師 • 資格 – Spring Professional – Spring Web Application Developer • 書籍の執筆 2 [ 改訂新版 ]Spring 入門
3.
ハンズオンの概要 • Servlet ・
JDBC を直接使ったアプリを、 Spring を使ったアプリにリファクタリングする • プログラムが洗練されて、生産性が上がること を実感する • Spring が行ってることを知る – 洗練された部分≒裏で Spring が働く部分 3
4.
アプリの題材 • 顧客管理アプリ 4 参照系 更新系
5.
アプリの構造 ( 現状
) 5 web.xml DB ブラウザ JSP ファイル Customer XxxServlet Customer ServiceImpl Customer DaoImpl Customer Service Customer Dao Customer JDBC JDBC プレゼンテーション層 サービス層 データアクセス層
6.
問題点 • データアクセス層 – リソースの取得・解放のコードが冗長 •
サービス層 – トランザクション制御のコードが冗長 • プレゼンテーション層 – リクエストのマッピングが面倒 – 入力チェックのコードが複雑 • その他 – 下位の層の具象クラスに依存 6
7.
リソースの取得・解放のコードが冗長 • sample.customer.dao. CustomerDaoImpl
クラス 7 データアクセス層
8.
トランザクション制御のコードが冗長 • sample.customer.service. CustomerServiceImpl 8 サービス層
9.
リクエストのマッピングが面倒 • WEB-INF/web.xml 9 プレゼンテーション層
10.
入力チェックのコードが複雑 • sample.customer.servlet. CustomerEditServlet 10 プレゼンテーション層
11.
下位の層の具象クラスに依存 • sample.customer.service. CustomerServiceImpl 11 その他
12.
【演習】 Spring を使って解決しましょう •
どのように解決されるか、演習を通して理解しましょう • 演習手順は github にアップされています – https://github.com/KouheiToki/jsug-handson-20161118 • 演習時間: 80 分 – 目安 • 躓いたら、講師陣にお気軽にお声掛けください 12 初心者 中級者 参照系の機能 80 分 45 分 更新系の機能 50 分 35 分
13.
改善点 • データアクセス層 – DB
接続・切断のコードなくなった • サービス層 – トランザクション制御のコードがなくなった • プレゼンテーション層 – リクエストのマッピングが簡単になった – 入力チェックが簡単になった • その他 – 下位の層の具象クラスに依存しなくなった 13
14.
リソースの取得・解放のコードがなくなった • sample.customer.dao. CustomerDaoImpl
クラス 14 データアクセス層
15.
トランザクション制御のコードがなくなった • sample.customer.service. CustomerServiceImpl 15 サービス層
16.
リクエストのマッピングが簡単になった • sample.customer.controller.CustomerShowController 16 プレゼンテーション層
17.
入力チェックが簡単になった • sample.customer.entity.Customer 17 プレゼンテーション層
18.
下位の層の具象クラスに依存しなくなった • sample.customer.service. CustomerServiceImpl 18 その他
19.
その他ポイント • Bean のコンフィグレーション –
コンフィグレーション方法の種類と使い分け • データアクセス – コネクション・トランザクション周りの仕組み • Spring MVC – 画面周りの処理の流れ • Spring Boot – Spring Boot が行っていること 19
20.
コンフィグレーションの方法 • コンフィグレーションの方法は3種類から選べ ます – XML –
アノテーション – JavaConfig 20 n のコンフィグレーション DI コンテナ : Foo 結果は同じ ※ DI コンテナが 管理するオブジェクトのことを Bean という
21.
一般的と思われる使い分け • 業務個別の Bean(Controller
、 Service 、 Dao) はアノテーション – Bean の数が増えてもメンテナンスが楽 • 裏方の Bean は XML もしくは JavaConfig – 環境ごとに Bean 定義を用意&一元化できて切替が容易 – サードパーティのクラスにアノテーションは付けれない 21 : Controller : Service : Dao : Transaction Manager : DataSource : View Resolver 本番用 テスト用 業務個別 裏方 n のコンフィグレーション : Transaction Manager : DataSource : View Resolver
22.
コネクション・ トランザクション周りの仕組み • コネクションの取得・解放、トランザクションの開始・終了は Spring が行う –
アプリで上記のコードは出てこない – コネクションを引数で渡さなくてよい 22 foo : Controller : Proxy @Transactional : Service : Dao :データア クセス機能 foo bar baz SQL ThreadLocal : Connection connect 、 begin commit 、 close データアクセス
23.
• HttpServlet を継承した
DispacherServlet が全体 の処理を制御している 画面周りの処理の流れ 23 Controller Model Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View ブラウザ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧⑨ Controller と メソッドを 特定 引数の値を 用意 View の形式・ ファイルを特 定 全体の処理 を制御 Spring MVC
24.
Spring Boot が行っていること •
必要な Jar ファイルのダウンロードや、裏方の Bean のコンフィグレーショ ン、組込サーバ (Tomcat) の実行を自動で行ってくれる • 業務個別の Bean のプログラムの作りは、 Boot を使っても使わなくても変 わらない • 組込じゃない Tomcat にデプロイすることも可能 24 : Controller : Service : Dao 裏方の Bean : Tomcat 組込サーバ 必要な Jar ファイル Spring の jar JPA の jar JUnit の jar ・・・ Boot が用意 業務個別の Bean ・・・ Spring Boot Tomcat の jar : Transaction Manager : DataSource : View Resolver 接続先などの プロパティ 今回 使用した部分
25.
さいごに • 書籍を購入して、知識を広げましょう • おすすめの書籍 25 [
改訂新版 ]Spring 入門 Spring 徹底入門
26.
26 ご清聴ありがとうございました
27.
27 ライセンスについて • JSUG マスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれ を元にした派生作品)の複製・頒布・表示・上演を認めます。 •
非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・上演を認め ます。 • 本作品のライセンスを遵守する限り、派生作品を頒布することを許可します。