Soumettre la recherche
Mettre en ligne
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
•
0 j'aime
•
1,248 vues
N
NTT DATA Technology & Innovation
Suivre
今こそ知りたいSpring Web (Spring Fest 2020講演資料) 2020年12月17日 株式会社NTTデータ 伊藤司
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 55
Recommandé
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
Masatoshi Tada
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Masatoshi Tada
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
Ryosuke Uchitate
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Recommandé
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
Masatoshi Tada
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Masatoshi Tada
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
Ryosuke Uchitate
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Ryosuke Uchitate
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
ssuser070fa9
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
ssuser070fa9
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
都元ダイスケ Miyamoto
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
Masatoshi Tada
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Akira Inoue
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
Contenu connexe
Tendances
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Ryosuke Uchitate
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
ssuser070fa9
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
ssuser070fa9
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
都元ダイスケ Miyamoto
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
Masatoshi Tada
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
Tendances
(20)
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Similaire à 今こそ知りたいSpring Web(Spring Fest 2020講演資料)
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Akira Inoue
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
システムのモダナイズ 落ちても良いアプリの作り方
システムのモダナイズ 落ちても良いアプリの作り方
Chihiro Ito
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
Akira Inoue
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
Vue入門
Vue入門
Takeo Noda
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
MorioImai
App Modernization for .NET
App Modernization for .NET
Yuta Matsumura
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
DevTakas
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう
Kimihiko Kitase
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
Akira Inoue
Angularreflex20141210
Angularreflex20141210
Shinichiro Takezaki
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
Akira Inoue
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
Clrh 110716 wcfwf
Clrh 110716 wcfwf
Tomoyuki Obi
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
bitbank, Inc. Tokyo, Japan
ASP.NET MVC 1.0
ASP.NET MVC 1.0
Shinpei Ohtani
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
Atomu Hidaka
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
Similaire à 今こそ知りたいSpring Web(Spring Fest 2020講演資料)
(20)
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
システムのモダナイズ 落ちても良いアプリの作り方
システムのモダナイズ 落ちても良いアプリの作り方
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
Vue入門
Vue入門
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
App Modernization for .NET
App Modernization for .NET
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
Angularreflex20141210
Angularreflex20141210
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
Clrh 110716 wcfwf
Clrh 110716 wcfwf
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
ASP.NET MVC 1.0
ASP.NET MVC 1.0
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
Plus de NTT DATA Technology & Innovation
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
NTT DATA Technology & Innovation
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
NTT DATA Technology & Innovation
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
NTT DATA Technology & Innovation
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
NTT DATA Technology & Innovation
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
NTT DATA Technology & Innovation
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
NTT DATA Technology & Innovation
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
NTT DATA Technology & Innovation
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
NTT DATA Technology & Innovation
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
NTT DATA Technology & Innovation
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
NTT DATA Technology & Innovation
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
NTT DATA Technology & Innovation
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
Plus de NTT DATA Technology & Innovation
(20)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
Dernier
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Dernier
(8)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
1.
© 2020 NTT
DATA Corporation 今こそ知りたいSpring Web Spring Fest 2020 2020/12/17 株式会社NTTデータ 伊藤司
2.
© 2020 NTT
DATA Corporation 2 自己紹介 @Bean SelfIntroduction selfIntroduction() { return SelfIntroduction.builder() .name("伊藤", "司") .company("株式会社NTTデータ") .role("アーキテクト") .work("一般企業向けのシステム開発") .work("フレームワークの技術検証") .work("コンテナ・k8sの技術検証") .hobby("ガンプラ") .build(); }
3.
© 2020 NTT
DATA Corporation 3 はじめに • 本セッションで話すこと • Springの2つのWebアプリケーションフレームワークの特徴・違い • Spring MVCの基本的な処理の流れ • Spring WebFluxの基本的な処理の流れ • 本セッションで出てくるサンプルコードはGitHubで公開しています • https://github.com/itoutki/introduction-to-spring-web
4.
© 2020 NTT
DATA Corporation 4 目次 1. 今こそ知りたいSpringのWebアプリケーションフレームワーク 2. 今こそ知りたいSpring MVC 3. 今こそ知りたいSpring WebFlux 4. まとめ
5.
© 2020 NTT
DATA Corporation 今こそ知りたいSpringの Webアプリケーションフレームワーク 5
6.
© 2020 NTT
DATA Corporation 6 Webアプリケーションとフレームワーク アプリケーションサーバ Webアプリケーション HTTP リクエスト Webアプリケーション フレームワーク HTML アプリケーションサーバ Webアプリケーション HTTP リクエスト Webアプリケーション フレームワーク JSON など 画面アプリケーション APIアプリケーション
7.
© 2020 NTT
DATA Corporation 7 SpringのWebアプリケーションフレームワーク Servlet Container Netty, Servlet 3.1+ Containers Servlet API Spring MVC Reactive Streams Adapters Spring WebFlux Servlet Stack Reactive Stack フレームワーク 抽象レイヤ アプリケーションサーバ
8.
© 2020 NTT
DATA Corporation 8 Spring MVCとは • サーブレットAPIに基づくWebアプリケーションフレー ムワーク • Tomcatなどのサーブレットコンテナ上で動作 • Spring Frameworkの初期から存在 • 画面アプリケーション向けの機能・APIアプリケーショ ン向けの機能ともに豊富 Servlet Container Servlet API Spring MVC Servlet Stack
9.
© 2020 NTT
DATA Corporation 9 Spring WebFluxとは • ノンブロッキングI/Oに基づくWebアプリケーションフ レームワーク • Nettyなどの非サーブレットのアプリケーションサーバ やServlet 3.1以降に対応したサーブレットコンテナ 上で動作 • Spring Framework 5.0から登場 • Reactorによるリアクティブプログラミングを採用 • APIアプリケーション向けの機能を中心に開発が進 められており画面アプリケーション向けの機能は未成 熟 Netty, Servlet 3.1+ Container Reactive Streams Adapters Spring WebFlux Reactive Stack
10.
© 2020 NTT
DATA Corporation 10 Spring MVCとSpring WebFluxの特徴(1)アーキテクチャ Spring MVCのアーキテクチャ Spring WebFluxのアーキテクチャ
11.
© 2020 NTT
DATA Corporation 11 Spring MVCとSpring WebFluxの特徴(2)リクエスト処理方式 スレッド1 スレッド2 スレッド3 スレッドN イベントループ スレッド Spring MVC Spring WebFlux ・・・ 1リクエストを1スレッドで処理 複数リクエストを1スレッドで処理
12.
© 2020 NTT
DATA Corporation 12 Spring MVCとSpring WebFluxの特徴(2)リクエスト処理方式 Spring MVC Spring WebFlux 実装し やすさ 処理を同期的に実装できる ノンブロッキングI/O、リアクティブプログラミング の理解が必要になる 機能性 スレッドローカルを前提とする機能が利用でき る(セッション、ロギングのMDCなど) スレッドローカルを前提とする機能が利用でき ない(ただしセッションは同等機能が用意さ れている) メモリ 使用量 多くのスレッドが必要になり、スレッドごとにメモ リの確保が必要になる スレッドが少なくてすむ CPU 利用 効率 ブロッキングI/Oのため、I/Oの待ち時間が発 生する ノンブロッキングI/Oのため、I/Oの待ち時間に 別の処理を実行できる スルー プット 高スループットの実現には多くのスレッドが必 要になる 遅いクライアントからの接続があるとその分ス レッドが解放されない 少ないスレッドで多くのリクエストを処理できる 遅いクライアントからの接続があっても影響が 小さい
13.
© 2020 NTT
DATA Corporation 13 Spring MVCとSpring WebFluxのユースケース例 Spring MVC Spring WebFlux 画面アプリケーション • 画面アプリケーション向けの機能が豊富 ブロッキング処理への依存があるアプリケーション • ブロッキング処理を前提とするSpring MVCと組み合わせたほうがよい 既存のSpring MVCアプリケーション • 現状に課題がなければSpring WebFluxに積極的に置き換える必要性は低い 高スループットが要求されるアプリケーション • Spring WebFluxの特性を生かしやすい 新規のAPIアプリケーション(マイクロサービスなど) • 省メモリでリソース効率の高いアプリケーションが実装できる • リアクティブプログラミングへの理解が必要となることには注意が必要
14.
© 2020 NTT
DATA Corporation 今こそ知りたいSpring MVC 14
15.
© 2020 NTT
DATA Corporation 15 Spring MVCとは • サーブレットAPIに基づくWebアプリケーションフレー ムワーク • Tomcatなどのサーブレットコンテナ上で動作 • Spring Frameworkの初期から存在 Servlet Container Servlet API Spring MVC Servlet Stack
16.
© 2020 NTT
DATA Corporation 16 Spring MVCのアーキテクチャ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦
17.
© 2020 NTT
DATA Corporation 17 Spring MVCの実装サンプル(画面アプリケーション) @Controller public class HelloMvcController { @GetMapping("/hello") public String handleHello(Model model) { String message = "Hello, Spring MVC!"; model.addAttribute("message", message); return "hello"; } } <!DOCTYPE html> <html lang="ja" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Hello</title> </head> <body> <p th:text="${message}"></p> </body> </html> Controller HelloMvcController Template hello.html 開発者が実装する部分 ControllerクラスとしてDIコンテナに登録するためのアノテーション Thymeleafのテンプレート
18.
© 2020 NTT
DATA Corporation 18 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ リクエストを受ける
19.
© 2020 NTT
DATA Corporation 19 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ URLやGET/POSTなど の条件からリクエストに マッチするメソッドを見つ ける
20.
© 2020 NTT
DATA Corporation 20 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ URLやGET/POSTなど の条件からリクエストに マッチするメソッドを見つ ける @Controller public class HelloMvcController { @GetMapping("/hello") public String handleHello(Model model) { String message = "Hello, Spring MVC!"; model.addAttribute("message", message); return "hello"; } } /hello というURLへのGETリクエストの場合、 handleHelloメソッドが選択される @PostMappingなどHTTPリクエストメソッドに対応 したアノテーションがある Controller
21.
© 2020 NTT
DATA Corporation 21 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ リクエストの内容をメソッ ドの引数に変換してメ ソッドに引き渡す
22.
© 2020 NTT
DATA Corporation 22 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ @Controller public class HelloMvcController { @GetMapping("/hello") public String handleHello(Model model) { String message = "Hello, Spring MVC!"; model.addAttribute("message", message); return "hello"; } } Modelオブジェクトが準備される リクエストの内容をメソッ ドの引数に変換してメ ソッドに引き渡す Controller
23.
© 2020 NTT
DATA Corporation 23 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ リクエストを処理し、Viewに 渡す値をModelに格納し、 View名を返す
24.
© 2020 NTT
DATA Corporation 24 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ @Controller public class HelloMvcController { @GetMapping("/hello") public String handleHello(Model model) { String message = "Hello, Spring MVC!"; model.addAttribute("message", message); return "hello"; } } Modelに文字列を格納 リクエストを処理し、Viewに 渡す値をModelに格納し、 View名を返す View名としてhelloを返す Controller
25.
© 2020 NTT
DATA Corporation 25 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ View名からViewの実装と Templateのパスを特定する
26.
© 2020 NTT
DATA Corporation 26 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ View名からViewの実装と Templateのパスを特定する 「View名:hello」から 「template/hello.html」を 特定
27.
© 2020 NTT
DATA Corporation 27 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ TemplateとModelの値から レスポンスを生成
28.
© 2020 NTT
DATA Corporation 28 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ TemplateとModelの値から レスポンスを生成 <!DOCTYPE html> <html lang="ja" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Hello</title> </head> <body> <p th:text="${message}"></p> </body> </html> Modelから「message」というキーで格納された文字 列「Hello, Spring MVC!」をテンプレートに当てはめる Template
29.
© 2020 NTT
DATA Corporation 29 Spring MVCの処理の流れ Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤ ⑥ ⑦ レスポンスを返す
30.
© 2020 NTT
DATA Corporation 30 Spring MVCのアーキテクチャ(APIアプリケーション) Dispatcher Servlet Handler Mapping Handler Adapter View Resolver View Model Template Controller Spring MVCによって提供される部分 開発者が実装する部分 ① ② ③ ④ ⑤
31.
© 2020 NTT
DATA Corporation 31 Spring MVCの実装サンプル(APIアプリケーション) @RestController public class HelloMvcRestController { @GetMapping("/hellorest") public String handleHelloRest() { String message = "Hello, Spring MVC!"; return message; } } Controller HelloMvcRestController 開発者が実装する部分
32.
© 2020 NTT
DATA Corporation 32 Spring MVCの実装サンプル(APIアプリケーション) @RestController public class HelloMvcRestController { @GetMapping("/hellorest") public String handleHelloRest() { String message = "Hello, Spring MVC!"; return message; } } Controller HelloMvcRestController 開発者が実装する部分 @Controllerではなく@RestControllerを指定することで、View名を返すのではな く、レスポンスデータを返すことを指定する @RestController = @Controller + @ResponseBody View名ではなくレスポンスデータとして文字列を返す 文字列以外にも任意のクラスやResponseEntityクラスを返す ことできる 返り値は適切なHttpMessageConverterによってレスポンス データに変換される
33.
© 2020 NTT
DATA Corporation 33 Spring MVCのまとめ 画面アプリケーションの処理の流れ APIアプリケーションの処理の流れ @RestController public class HelloMvcRestController { @GetMapping("/hellorest") public String handleHelloRest() { String message = "Hello, Spring MVC!"; return message; } } @Controller public class HelloMvcController { @GetMapping("/hello") public String handleHello(Model model) { String message = "Hello, Spring MVC!"; model.addAttribute("message", message); return "hello"; } }
34.
© 2020 NTT
DATA Corporation 今こそ知りたいSpring WebFlux 34
35.
© 2020 NTT
DATA Corporation 35 Spring WebFluxとは • ノンブロッキングI/Oに基づくWebアプリケーションフ レームワーク • Nettyなどの非サーブレットのアプリケーションサーバ やServlet 3.1以降に対応したサーブレットコンテナ 上で動作 • Spring Framework 5.0から登場 • Reactorによるリアクティブプログラミングを採用 Netty, Servlet 3.1+ Container Reactive Streams Adapters Spring WebFlux Reactive Stack
36.
© 2020 NTT
DATA Corporation 36 Spring WebFluxのアーキテクチャ Dispatcher Handler Handler Mapping Handler Adapter HandlerResult Handler View Model Template Controller Spring WebFluxによって提供される部分 開発者が実装する部分 View Resolver ① ② ③ ④ ⑤ ⑥ ⑦
37.
© 2020 NTT
DATA Corporation 37 Spring WebFluxの処理の流れ Dispatcher Handler Handler Mapping Handler Adapter HandlerResult Handler View Model Template Controller Spring WebFluxによって提供される部分 開発者が実装する部分 View Resolver ① ② ③ ④ ⑤ ⑥ ⑦ リクエストを 受ける リクエストの内容を メソッドの引数に変 換してメソッドに引 き渡す リクエストにマッチする メソッドを見つける リクエストを処理し、 Viewに渡す値を Modelに格納し、 View名を返す View名からViewの 実装とTemplateの パスを特定する Templateと Modelの値から レスポンスを生成 レスポンスを 返す
38.
© 2020 NTT
DATA Corporation 38 Spring WebFluxのアーキテクチャ(APIアプリケーション) Dispatcher Handler Handler Mapping Handler Adapter HandlerResult Handler View Model Template Controller Spring WebFluxによって提供される部分 開発者が実装する部分 View Resolver ① ② ③ ④ ⑤ ⑥
39.
© 2020 NTT
DATA Corporation 39 Spring WebFluxの実装サンプル(APIアプリケーション) @RestController public class HelloWebFluxRestController { @GetMapping("/hellorest") public Mono<String> handleHelloRest() { String message = "Hello, Spring WebFlux!"; return Mono.just(message); } } Controller HelloWebFluxRestController 開発者が実装する部分
40.
© 2020 NTT
DATA Corporation 40 Spring WebFluxの実装サンプル(APIアプリケーション) @RestController public class HelloWebFluxRestController { @GetMapping("/hellorest") public Mono<String> handleHelloRest() { String message = "Hello, Spring WebFlux!"; return Mono.just(message); } } Controller HelloWebFluxRestController 開発者が実装する部分 @RestController、@GetMappingはSpring MVCと同様に 使える
41.
© 2020 NTT
DATA Corporation 41 Spring WebFluxの実装サンプル(APIアプリケーション) @RestController public class HelloWebFluxRestController { @GetMapping("/hellorest") public Mono<String> handleHelloRest() { String message = "Hello, Spring WebFlux!"; return Mono.just(message); } } Controller HelloWebFluxRestController 開発者が実装する部分 メソッドの返り値の型がMono<String> 文字列からMonoを生成して返す
42.
© 2020 NTT
DATA Corporation 42 Reactorとは • ノンブロッキング・非同期・イベントドリブンのプログラミングモデルであるリアクティブプログラミングの仕組みを提 供するライブラリ • リアクティブプログラミングの標準であるReactive Streamsに準拠 • Stream APIのような形で実装 Flux<T> 0個以上(無限も可)のデータを持つList/Streamのようなもの Mono<T> 0 or 1個のデータを持つObject/Optionalのようなもの
43.
© 2020 NTT
DATA Corporation 43 Reactorとは Stream APIとFluxの比較 List<Integer> input = Arrays.asList(1, 2, 3, 4, 5); List<Integer> output = input.stream() .filter(i -> i % 2 == 0) .map(i -> i * 2) .collect(Collectors.toList()); System.out.println(output); Flux<Integer> input = Flux.just(1, 2, 3, 4, 5); Flux<Integer> output = input .filter(i -> i % 2 == 0) .map(i -> i * 2); output.subscribe(i -> System.out.println(i)); Stream APIの例 Fluxの例 Stream APIと同様filter・mapなどの演算子がある subscribeされるまで何も実行されない =subscribeのイベントを契機に処理が実行される 整数のデータ列のうち、偶数のデータだけを抜き出して2倍する処理
44.
© 2020 NTT
DATA Corporation 44 Reactorとは もう少し複雑な例 Mono.just("Reactor Mono") // 文字列1個を発生させる .map(str -> String.format("Hello, %s!", str)) // 文字列を変換する .subscribe(System.out::println); // 標準出力に出力する => Hello, Reactor Mono! Flux.interval(Duration.ofSeconds(1)) // 1秒ごとにデータを発生させる .take(5) // 先頭の5個分のみを取得する .map(l -> LocalDateTime.now()) // 現在時刻を返す .subscribe(d -> Sytem.out.println(d)); // 現在時刻を標準出力に出力する => 2020-12-17T13:50:35.058993 2020-12-17T13:50:36.033929 2020-12-17T13:50:37.034292 2020-12-17T13:50:38.033898 2020-12-17T13:50:39.033848
45.
© 2020 NTT
DATA Corporation 45 Spring WebFluxの実装サンプル(APIアプリケーション) @RestController public class HelloWebFluxRestController { @GetMapping("/hellorest") public Mono<String> handleHelloRest() { String message = "Hello, Spring WebFlux!"; return Mono.just(message); } } Controller HelloWebFluxRestController 開発者が実装する部分 メソッドの返り値の型がMono<String> 文字列からMonoを生成して返す Monoはフレームワーク内部で subscribeされる
46.
© 2020 NTT
DATA Corporation 46 Spring WebFluxによるServer-Sent Eventsの実装例 @GetMapping("/interval") public Flux<Message> handleInterval() { return Flux.interval(Duration.ofSeconds(1)) .take(5) .map(l -> new Message(LocalDateTime.now().toString())); }
47.
© 2020 NTT
DATA Corporation 47 Spring WebFluxによるServer-Sent Eventsの実装例 @GetMapping("/interval") public Flux<Message> handleInterval() { return Flux.interval(Duration.ofSeconds(1)) .take(5) .map(l -> new Message(LocalDateTime.now().toString())); } メソッドの返り値の型にFluxを指定
48.
© 2020 NTT
DATA Corporation 48 Spring WebFluxによるServer-Sent Eventsの実装例 @GetMapping("/interval") public Flux<Message> handleInterval() { return Flux.interval(Duration.ofSeconds(1)) .take(5) .map(l -> new Message(LocalDateTime.now().toString())); } curl -H 'Accept: text/event-stream;' http://localhost:8080/interval => data:{"message": "2020-12-17T16:35:48.413935"} data:{"message": "2020-12-17T16:35:49.405907"} data:{"message": "2020-12-17T16:35:50.405909"} data:{"message": "2020-12-17T16:35:51.405992"} data:{"message": "2020-12-17T16:35:52.405936"} curl -H 'Accept: application/x-ndjson;' http://localhost:8080/interval => {"message": "2020-12-17T16:35:48.413935"} {"message": "2020-12-17T16:35:49.405907"} {"message": "2020-12-17T16:35:50.405909"} {"message": "2020-12-17T16:35:51.405992"} {"message": "2020-12-17T16:35:52.405936"} メソッドの返り値の型にFluxを指定 リクエスト時のAcceptヘッダでServer-Sent EventsのMIMEタイプを指定 1秒ごとにレスポンスデータが送信される
49.
© 2020 NTT
DATA Corporation 49 Spring WebFlux まとめ 画面アプリケーションの処理の流れ APIアプリケーションの処理の流れ Flux<T> 0個以上(無限も可)のデータ を持つList/Streamのようなもの Mono<T> 0 or 1個のデータを持つ Object/Optionalのようなもの
50.
© 2020 NTT
DATA Corporation まとめ 50
51.
© 2020 NTT
DATA Corporation 51 SpringのWebアプリケーションフレームワーク Servlet Container Netty, Servlet 3.1+ Containers Servlet API Spring MVC Reactive Streams Adapters Spring WebFlux Servlet Stack Reactive Stack Servletベース ノウハウが多く開発しやすい ノンブロッキングベース リソース効率が良い リアクティブプログラミングの理解が必要
52.
© 2020 NTT
DATA Corporation 52 Spring MVCをもっと詳しく知りたい • TERASOLUNA Server Framework for Java (5.x) Development Guideline • https://terasolunaorg.github.io/guideline/ • Spring徹底入門 • https://www.shoeisha.co.jp/book/detail/9784798142470 • 改訂新版 Spring入門 • https://gihyo.jp/book/2016/978-4-7741-8217-9 • 令和時代に「Spring入門」「Spring徹底入門」を読むとき気をつけるべきN個のこと • https://qiita.com/suke_masa/items/392976749fce94a8ef1f • 徹底解剖Spring MVCアーキテクチャー –DispacherServletの中身覗いてきました– • https://www.slideshare.net/ssuser070fa9/spring-fest-2019spring-mvc • Web on Servlet Stack(Spring MVC公式ドキュメント) • https://docs.spring.io/spring-framework/docs/current/reference/html/web.html
53.
© 2020 NTT
DATA Corporation 53 Spring WebFluxをもっと詳しく知りたい • Introdction to Spring WebFlux • https://www.slideshare.net/makingx/introduction-to-spring-webflux-jsug-sfa1 • Reactive Webアプリケーション – そしてSpring 5へ • https://www.slideshare.net/makingx/reactive-web-spring-5-jjugccc-cccef3 • Spring 5に備えるリアクティブプログラミング入門 • https://www.slideshare.net/TakuyaIwatsuka/spring-5 • 業務で使いたいSpring WebFluxによるReactiveプログラミング • https://speakerdeck.com/shintanimoto/introduction-to-reactive-programming-using-spring- webflux • Functional Spring Cookbook • https://docs.google.com/presentation/d/1-0NopTfA-CGiCNvKPDOH9ZDMHhazKuoT-_1R69Wp8qs • Web on Reactive Stack(Spring WebFlux公式ドキュメント) • https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html
54.
© 2020 NTT
DATA Corporation 54 宣伝 • IT Search+にてSpring WebFlux入門の連載始めました • Spring WebFlux・リアクティブプログラミングの入門記事のほか、HTTPクライアントのWebClientやDBアク セスのR2DBCの入門記事を掲載予定です • https://news.mynavi.jp/itsearch/article/devsoft/5260
55.
© 2020 NTT
DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。