Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Takuya Iwatsuka
PDF, PPTX
3,435 views
Spring I/O 2017 報告 ThymeleafのWebFlux対応
2017年6月29日にJSUGのSpring I/O 2017報告会での発表に使用した資料です.
Engineering
◦
Read more
8
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 37
2
/ 37
3
/ 37
4
/ 37
5
/ 37
6
/ 37
7
/ 37
8
/ 37
9
/ 37
10
/ 37
11
/ 37
12
/ 37
13
/ 37
14
/ 37
15
/ 37
16
/ 37
17
/ 37
18
/ 37
19
/ 37
20
/ 37
21
/ 37
22
/ 37
23
/ 37
24
/ 37
25
/ 37
26
/ 37
27
/ 37
28
/ 37
29
/ 37
30
/ 37
31
/ 37
32
/ 37
33
/ 37
34
/ 37
35
/ 37
36
/ 37
37
/ 37
More Related Content
PDF
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
by
Takuya Iwatsuka
PPTX
Spring I/O 2015 報告
by
Takuya Iwatsuka
PDF
SpringOne 2016 報告 Reactive APIの設計・実装・使用
by
Takuya Iwatsuka
PDF
Spring social の基礎
by
Takuya Iwatsuka
PPTX
Spring 5に備えるリアクティブプログラミング入門
by
Takuya Iwatsuka
PPTX
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
by
Takuya Iwatsuka
PPTX
SpringIO2019報告_Kotlin関連
by
ShingoKurihara1
PDF
ニュースアプリで起きた不具合から学んだ 最適への一歩
by
Yahoo!デベロッパーネットワーク
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
by
Takuya Iwatsuka
Spring I/O 2015 報告
by
Takuya Iwatsuka
SpringOne 2016 報告 Reactive APIの設計・実装・使用
by
Takuya Iwatsuka
Spring social の基礎
by
Takuya Iwatsuka
Spring 5に備えるリアクティブプログラミング入門
by
Takuya Iwatsuka
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
by
Takuya Iwatsuka
SpringIO2019報告_Kotlin関連
by
ShingoKurihara1
ニュースアプリで起きた不具合から学んだ 最適への一歩
by
Yahoo!デベロッパーネットワーク
What's hot
PDF
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
by
Yahoo!デベロッパーネットワーク
PPTX
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
by
gree_tech
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
PDF
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
by
Yahoo!デベロッパーネットワーク
PDF
僕とヤフーと時々Teradata #prestodb
by
Yahoo!デベロッパーネットワーク
PDF
決済金融から始めるデータドリブンカンパニー #yjmu
by
Yahoo!デベロッパーネットワーク
PDF
Spring Security 5.0 解剖速報
by
Takuya Iwatsuka
PDF
Keynote
by
gree_tech
PDF
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
by
Yahoo!デベロッパーネットワーク
PDF
Ladder of cqrs+es
by
Masaki Toyoshima
PDF
Design pattern in presto source code
by
Yahoo!デベロッパーネットワーク
PDF
コンテナ時代にインフラエンジニアは何をするのか
by
gree_tech
PDF
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
by
Naohiro Yoshida
PDF
Storm の新機能について @HSCR #hadoopreading
by
Yahoo!デベロッパーネットワーク
PDF
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
by
Yahoo!デベロッパーネットワーク
PDF
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
by
Yuichi Hasegawa
PDF
TypeScript製フレームワーク「Nest」のご紹介
by
bitbank, Inc. Tokyo, Japan
PPTX
Spring Security 4.1 の新機能
by
正和 井岡
PDF
10大ニュースで振り返るPGCon2015
by
NTT DATA OSS Professional Services
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
by
Yahoo!デベロッパーネットワーク
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
by
Yahoo!デベロッパーネットワーク
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
by
gree_tech
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
by
Yahoo!デベロッパーネットワーク
僕とヤフーと時々Teradata #prestodb
by
Yahoo!デベロッパーネットワーク
決済金融から始めるデータドリブンカンパニー #yjmu
by
Yahoo!デベロッパーネットワーク
Spring Security 5.0 解剖速報
by
Takuya Iwatsuka
Keynote
by
gree_tech
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
by
Yahoo!デベロッパーネットワーク
Ladder of cqrs+es
by
Masaki Toyoshima
Design pattern in presto source code
by
Yahoo!デベロッパーネットワーク
コンテナ時代にインフラエンジニアは何をするのか
by
gree_tech
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
by
Naohiro Yoshida
Storm の新機能について @HSCR #hadoopreading
by
Yahoo!デベロッパーネットワーク
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
by
Yahoo!デベロッパーネットワーク
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
by
Yuichi Hasegawa
TypeScript製フレームワーク「Nest」のご紹介
by
bitbank, Inc. Tokyo, Japan
Spring Security 4.1 の新機能
by
正和 井岡
10大ニュースで振り返るPGCon2015
by
NTT DATA OSS Professional Services
Similar to Spring I/O 2017 報告 ThymeleafのWebFlux対応
PDF
Typesafe Reactive Platformで作るReactive System
by
TIS Inc.
PDF
Typesafe Reactive Platformで作るReactive System入門
by
TIS Inc.
PDF
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
by
SmartNews, Inc.
PDF
Practical migration from JSP to Thymeleaf
by
Toshiki Iga
PDF
thymeleafさいしょの一歩
by
Yuichi Hasegawa
PDF
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
by
Toshiaki Maki
PDF
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
by
Takuya Iwatsuka
PDF
What happens in Spring Cloud Netflix
by
apkiban
PPTX
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PPTX
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
by
Takahiro Fujii
Typesafe Reactive Platformで作るReactive System
by
TIS Inc.
Typesafe Reactive Platformで作るReactive System入門
by
TIS Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
by
SmartNews, Inc.
Practical migration from JSP to Thymeleaf
by
Toshiki Iga
thymeleafさいしょの一歩
by
Yuichi Hasegawa
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
by
Toshiaki Maki
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
by
Takuya Iwatsuka
What happens in Spring Cloud Netflix
by
apkiban
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
by
Takahiro Fujii
Spring I/O 2017 報告 ThymeleafのWebFlux対応
1.
Copyright©2017 NTT corp.
All Rights Reserved. Spring I/O 2017 報告会 ThymeleafのWebFlux対応 2017年6⽉29⽇ NTT ソフトウェアイノベーションセンタ 岩塚 卓弥
2.
2Copyright©2017 NTT corp.
All Rights Reserved. • 名前:岩塚 卓弥 • 所属:NTT ソフトウェアイノベーションセンタ • NTTの研究所のうちソフトウェアを専⾨に扱う • ⾃部署ではソフトウェア⼯学を研究 • Springベースのグループ共通フレームワークの整備を担当 • Spring I/Oには2015年から3年連続参加 ⾃⼰紹介
3.
3Copyright©2017 NTT corp.
All Rights Reserved. • Getting Thymeleaf Ready for Spring 5 and Reactive • Daniel Fernández – Thymeleaf lead • スライド • https://speakerdeck.com/dfernandez/o-2017-getting- thymeleaf-ready-for-spring-5-and-reactive • デモ • https://github.com/danielfernandez/reactive-matchday 今⽇の元ネタ(⼀次資料)
4.
4Copyright©2017 NTT corp.
All Rights Reserved. • Thymeleaf 3を使⽤している • Thymeleaf 2を使⽤している • JSPを使⽤している • その他のテンプレートエンジンを使っている 会場アンケート:Thymeleaf 使ってますか
5.
5Copyright©2017 NTT corp.
All Rights Reserved. 世界での利⽤状況 Spring Initializrで選択される テンプレートエンジンのうち 75%程度がThymeleaf Thymeleaf Freemarker Mustache Groovy Templates Velocity ⽉間DL数は22万以上 ⼀年で7万5千以上の伸び Spring I/O 2017 Keynoteより
6.
6Copyright©2017 NTT corp.
All Rights Reserved. Spring MVC × Thymeleaf 3 の基本形 greeting.html 実装 出⼒
7.
7Copyright©2017 NTT corp.
All Rights Reserved. Spring MVC × Thymeleaf 3 処理概略 TemplateName Context Engine Model Template +α HTML Controllerで設定したModel (Map<String, Object>)
8.
8Copyright©2017 NTT corp.
All Rights Reserved. Spring MVC × Thymeleaf 3 処理概略 TemplateName Context Engine Model Template +α HTML Controllerから渡された View名を解決したもの ServletContextや パス変数等を追加
9.
9Copyright©2017 NTT corp.
All Rights Reserved. Spring MVC × Thymeleaf 3 処理概略 TemplateName Context Engine Model Template +α HTMLTemplateを取得 TemplateとContextから HTMLを⽣成
10.
10Copyright©2017 NTT corp.
All Rights Reserved. Spring MVC × Thymeleaf 3 処理概略 TemplateName Context Engine Model Template +α HTML HttpServletResponseに 書き込み
11.
11Copyright©2017 NTT corp.
All Rights Reserved. Reactive化? TemplateName Context Engine Model Template +α HTML Blocking! Blocking!
12.
12Copyright©2017 NTT corp.
All Rights Reserved. Reactive化? TemplateName Context Engine Model Template +α HTML Blocking! Reactive! 出⼒をPublisherに
13.
13Copyright©2017 NTT corp.
All Rights Reserved. • FULL • CHUNKED • DATA-DRIVEN Reactiveな3つの処理モード
14.
14Copyright©2017 NTT corp.
All Rights Reserved. FULLモード HTML Mono<DataBuffer>Engine ServerHttpResponseに書き込み HTMLを⼀括⽣成して⼀括出⼒ → 最もシンプルだがメモリ消費は⼤
15.
15Copyright©2017 NTT corp.
All Rights Reserved. • FULL • CHUNKED • DATA-DRIVEN Reactiveな3つの処理モード
16.
16Copyright©2017 NTT corp.
All Rights Reserved. CHUNKEDモード <!DOCTYPE html> … Flux<DataBuffer>Engine ServerHttpResponseに書き込み ・・・ … </html> HTMLを⼀定のバイト数ごとに区切って⽣成 → backpressureによって速度調整可能に
17.
17Copyright©2017 NTT corp.
All Rights Reserved. • FULL • CHUNKED • DATA-DRIVEN Reactiveな3つの処理モード
18.
18Copyright©2017 NTT corp.
All Rights Reserved. FULL / CHUNKED に共通の課題 Model Mono Flux
19.
19Copyright©2017 NTT corp.
All Rights Reserved. FULL / CHUNKED に共通の課題 Context Engine Model Mono Flux ArrayList Mono Mono AbstractView#resolveAsyncAttributes CollectList
20.
20Copyright©2017 NTT corp.
All Rights Reserved. DATA-DRIVENモード Context Engine Model ReactiveDataDriverContextVariable wrapすることでresolutionを回避 … … … ThymeleafがProcessorのように振る舞う
21.
21Copyright©2017 NTT corp.
All Rights Reserved. DATA-DRIVEN & SSE DATA-DRIVENモードの場合はデータ1件ごとに 部分的なHTMLをSSEで送信可能 <table> <tr data-th-each=“name : ${names}”> <td>[[${name}]]</td> </tr> </table> + Alice Bob Carol event: head id: 0 data: <table> event: body id: 1 data: <tr> data: <td>Alice</td> data: <tr> event: tail id: 4 data: </table> ・・・
22.
22Copyright©2017 NTT corp.
All Rights Reserved. デモアプリ紹介 試合状況 コメント
23.
23Copyright©2017 NTT corp.
All Rights Reserved. 初期画⾯表⽰ Agent Controller ReavtiveMongoTemplate ReactiveMongoRepository match/{matchId} 初期画⾯ リクエスト以前のコメント 対戦チーム情報など
24.
24Copyright©2017 NTT corp.
All Rights Reserved. 初期画⾯表⽰の実装 - MatchController コメントのFluxを取得 コメントのFluxをReactiveDataDriverContextVariableで warpしてModelに追加 → DATA-DRIVENモード
25.
25Copyright©2017 NTT corp.
All Rights Reserved. デモアプリ紹介 動的に更新
26.
26Copyright©2017 NTT corp.
All Rights Reserved. 試合状況描画 Agent Controller ReavtiveMongoTemplate ReactiveMongoRepository match/{matchId}/statusStream 画⾯の⼀部 (SSEで送信) 試合状況 javascriptで画⾯に反映
27.
27Copyright©2017 NTT corp.
All Rights Reserved. 試合状況描画 Agent Controller ReavtiveMongoTemplate ReactiveMongoRepository 画⾯の⼀部を⽣成 (SSEで送信) 新しい試合状況を取得 javascriptで画⾯に反映 得点や警告などの イベントをランダム⽣成 新しいイベントを挿⼊
28.
28Copyright©2017 NTT corp.
All Rights Reserved. 試合状況描画の実装 - MatchEventInfoRepository MongoDBのTailable Cursorを使⽤して 新しくinsertされたデータを取得し続ける
29.
29Copyright©2017 NTT corp.
All Rights Reserved. 試合状況描画の実装 - MatchController SSEで送信 Thymeleafで画⾯の⼀部を⽣成 DATA-DRIVEN モード
30.
30Copyright©2017 NTT corp.
All Rights Reserved. 試合状況描画の実装 – match.html (js) SSEで送信されてきた画⾯の⼀部を使って 画⾯を部分的に書き換える 部分⽣成対象
31.
31Copyright©2017 NTT corp.
All Rights Reserved. デモアプリ紹介 動的に追加
32.
32Copyright©2017 NTT corp.
All Rights Reserved. コメント描画 Agent Controller ReavtiveMongoTemplate ReactiveMongoRepository match/{matchId}/commentStream? timestamp=xxxxxxxx(初期リクエスト時刻) json (SSEで送信) 指定timestampより 後のコメント javascriptで画⾯に反映
33.
33Copyright©2017 NTT corp.
All Rights Reserved. コメント描画 Agent Controller ReavtiveMongoTemplate ReactiveMongoRepository json (SSEで送信) javascriptで画⾯に反映 コメントをランダム⽣成 新しいコメントを取得 新しいコメントを挿⼊
34.
34Copyright©2017 NTT corp.
All Rights Reserved. 試合状況描画の実装 - MatchCommentRepository MongoDBのTailable Cursorを使⽤して 新しくinsertされたデータを取得し続ける
35.
35Copyright©2017 NTT corp.
All Rights Reserved. コメント描画の実装 - MatchController jsonをSSEで送信
36.
36Copyright©2017 NTT corp.
All Rights Reserved. 試合状況描画の実装 – match.html (js) SSEで送信されてきたjsonデータを使って 画⾯を部分的に書き換える
37.
37Copyright©2017 NTT corp.
All Rights Reserved. • Thymeleaf 3 × WebFluxでReactiveなView出⼒ • 3つの処理モード • FULL • CHUNKED • DATA-DRIVEN • ⾒所満載のデモ まとめ 是⾮⼀次資料(スライド / ソースコード)に アクセスしてみて下さい!
Download