Enviar pesquisa
Carregar
Spring Framework ふりかえりと4.3新機能
•
11 gostaram
•
4,155 visualizações
kimulla
Seguir
https://jsug.doorkeeper.jp/events/50931
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 42
Baixar agora
Baixar para ler offline
Recomendados
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
Rust と Wasmの現実
Rust と Wasmの現実
ShogoTagami1
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
Recomendados
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
Rust と Wasmの現実
Rust と Wasmの現実
ShogoTagami1
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
例外設計における大罪
例外設計における大罪
Takuto Wada
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
Masahito Zembutsu
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
Kazuto Kusama
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
真行 八田
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
Guide To AGPL
Guide To AGPL
Mikiya Okuno
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
Masahito Zembutsu
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
Spring Security 4.1 の新機能
Spring Security 4.1 の新機能
正和 井岡
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
Fukui Osamu
Mais conteúdo relacionado
Mais procurados
例外設計における大罪
例外設計における大罪
Takuto Wada
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
Masahito Zembutsu
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
Kazuto Kusama
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
真行 八田
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
Guide To AGPL
Guide To AGPL
Mikiya Okuno
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
Masahito Zembutsu
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
Mais procurados
(20)
例外設計における大罪
例外設計における大罪
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
Docker Compose 徹底解説
Docker Compose 徹底解説
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Guide To AGPL
Guide To AGPL
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Destaque
Spring Security 4.1 の新機能
Spring Security 4.1 の新機能
正和 井岡
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
Fukui Osamu
Spring Framework 4.3から5.0へ
Spring Framework 4.3から5.0へ
movmov
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来
Yuichi Hasegawa
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Yuichi Hasegawa
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Toshiaki Maki
Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発
terahide
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
sogdice
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
Tokuhiro Matsuno
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
Takuya Iwatsuka
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpring
Takuya Hattori
Destaque
(12)
Spring Security 4.1 の新機能
Spring Security 4.1 の新機能
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
Spring Framework 4.3から5.0へ
Spring Framework 4.3から5.0へ
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpring
Semelhante a Spring Framework ふりかえりと4.3新機能
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
Akio Katayama
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
Akio Katayama
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
kenjis
Spring Integration 超入門
Spring Integration 超入門
Yasutaka Sugamura
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
ichikaway
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
Junichiro Kazama
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
Nobuhiro Sue
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
Spring integration概要
Spring integration概要
kuroiwa
Windows Azure PHP Tips
Windows Azure PHP Tips
Microsoft Openness Japan
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
純生 野田
SharePoint Framework をはじめよう #spfx
SharePoint Framework をはじめよう #spfx
Hirofumi Ota
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
Tomohito Adachi
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Kazuyuki Miyake
Semelhante a Spring Framework ふりかえりと4.3新機能
(20)
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Struts2を始めよう!
Struts2を始めよう!
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
Spring Integration 超入門
Spring Integration 超入門
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Spring integration概要
Spring integration概要
Windows Azure PHP Tips
Windows Azure PHP Tips
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
SharePoint Framework をはじめよう #spfx
SharePoint Framework をはじめよう #spfx
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Último
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Último
(8)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
Spring Framework ふりかえりと4.3新機能
1.
Spring Framework ふりかえりと4.3新機能 木村 俊介
@kimullaa 1
2.
自己紹介 名前: 木村 俊介(きむら
しゅんすけ) 仕事: SI企業の技術部隊@2013 フレームワーク整備と展開、PJ支援 2年前までは Struts + EJB + iBatis ベースの自社FW 現在は Spring + MyBatis を社内に推進、展開 Spring歴: 2年くらい 2
3.
今日のテーマ 基礎をふりかえりながら、 Spring Framework 4.3
の新機能をご紹介 『Modern Java Component Design with Spring Framework 4.3』 - モダンなSpringの使い方と新機能の説明 - スライド - 動画 『Spring MVC 4 Web Apps』 - WEB機能(Spring MVC)に絞った新機能の説明 - スライド - 動画まだ上がってません Juergen Hoeller Rossen Stoyanchev 3
4.
既に話しつくされたネタ感 @Shimizuさんの日本語解説ブログ http://qiita.com/kazuki43zoo/items/172d132ff8f4ba098888#core- container-improvements JSUG勉強会 2016年その4 Spring
I/O報告会 池谷さんの発表 http://ikeyat.github.io/slides- publish/slides/201606XX_SpringIO2016Summary/#1 JJUG CCC 2016 Spring @makingさんの発表 http://sssslide.com/www.slideshare.net/makingx/jjugccc-cccgh5-whats- new-in-spring-framework-43-boot-14-pivotals-cloud-native-approach Spring Framework リファレンス http://docs.spring.io/spring/docs/current/spring-framework- reference/html/new-in-4.3.html 4
5.
でもやります 5
6.
知ってる人は知っている 6
7.
知らない人は覚えてね 7
8.
Spring Framework ふりかえり 8
9.
DIコンテナ Dependency Injection Beanの登録 - Java
Config - アノテーションベース - XMLベース Bean BeanBean Bean Bean lookup 依存性の解決 メリット: テスタビリティ向上、ライフサイクル管理 9
10.
Aspect Oriented Programming AOP AOP クラスA
クラスB 横断的関心事の分離 メリット:コード量削減、見通しのよいコード ログ出力、Tx管理 10
11.
で、こうなる 11
12.
Java Config + アノテーションベース @Configuration
// Java Configの宣言 @Profile(“standalone”) // standaloneプロファイル時に有効になる @EnableTransactionManagement // SpringによるTx管理を有効化 @ComponentScan(“com.example”) // スキャン&Bean登録 public class AppConfig { @Bean // Bean定義 public FooService fooService() { // CGLibでUtilityのインスタンスは1度しか生成されない return new FooServiceImpl(utility()); } @Bean // Bean定義 public Utility utility() {return new Utility();} } ~4.2 12
13.
@Configuration public class AppConfig
implements FooAppConfig { … // デフォルトメソッドのBean定義が有効になる } public interface FooAppConfig { @Bean default FooService fooService() { return new FooServiceImpl(); } } ~4.2 13 Java Config & Java8
14.
@Component class @Service //
ComponentScan時にBean登録される @Lazy // Lazy-load(利用時にインスタンス化) public class FooServiceImpl implements FooService { private final FooRepository fooRepository; @Autowired // コンストラクタインジェクション public FooServiceImpl(FooRepository fooRepository) { this. fooRepository = fooRepository; } @Transactional // AOPでトランザクション管理 public void update() { … } ~4.2 14
15.
Lazy Injection Points @Bean
@Lazy public FooRepository fooRepository () { return new FooRepositoryImpl(); } @Service public class FooServiceImpl implements FooService { private final FooRepository fooRepository ; @Autowired // 依存先のBeanに関係なく@Lazyを有効化できる public FooServiceImpl(@Lazy FooRepository fooRepository ) { this. fooRepository = fooRepository ; } } ~4.2 15
16.
合成アノテーション @Service @Scope(“session”) @Primary @Transactional(rollbackFor = Exception.class,
timeout = 30) public @interface MyCustomService {} @MyCustomService public class FooServiceImpl implements FooService { … } アノテーションを組み合わせられる ~4.2 16
17.
合成アノテーション 属性の上書き @Service @Scope(“session”) @Primary @Transactional(rollbackFor =
Exception.class, timeout = 30) public @interface MyCustomService { @AliasFor(annotation = Transactional.class, attribute = “readOnly”) boolean readOnly() default false; } @MyCustomService(readOnly=false) public class FooServiceImpl implements FooService { … } 上書きしたい属性だけ公開できる ~4.2 17
18.
Spring Framework 4.3 18
19.
Spring Framework 4.3
4系のラストリリース(リリース済み) 2019年までサポート SpringBoot 1.4 のデフォルト 『SpringOne Platform 2016 keynote』より引用 19
20.
Spring Framework 4.3
改善点 Core Container Improvements Web Improvements Data Access Improvements Caching Improvements JMS Improvements WebSocket Messaging Improvements Testing Improvements 今日話すことは この中の一部 20
21.
Core Container Improvements 21
22.
1. 暗黙的なコンストラクタ インジェクション @RestController public class
Foo { private final HogeService hogeService; private final FugaService fugaService; // @Autowired public Foo(HogeService hogeService, FugaService fugaService) { this.hogeService = hogeService; this.fugaService = fugaService; } 4.3 コンストラクタが1つなら 省略可能 22
23.
2. Java Config
クラスで コンストラクタインジェクション @Configuration public class AppConfig { private final Utility utility; // @Autowired が書けるようになった(けど省略可能) public AppConfig(Utility utility) { this.utility = utility; } @Bean public FooService fooService() { return new FooServiceImpl(this.utility); } } 4.3 23
24.
3. InjectionPoint like
CDI 『http://sssslide.com/www.slideshare.net/makingx/jjugccc-cccgh5-whats-new-in-spring- framework-43-boot-14-pivotals-cloud-native-approach』より引用 4.3 4.3 24
25.
活用例. Loggerの生成 public class
HelloController { @Autowired private Logger logger; //= LoggerFactory.getLogger(HelloController.class) public void log(){ // … com.example.controllers.HelloController : hello と表示される logger.info(“hello”); } } @Configuration public class AppConfig { @Bean @Scope(value="prototype“, proxyMode = ScopedProxyMode.NO) Logger getLogger(InjectionPoint ip ) { return LoggerFactory.getLogger( ip.getMember().getDeclaringClass().getName()); } } 4.3 proxyModeがNOなので、 自身のスコープよりも広いBeanにインジェクト されると、依存先のスコープになる (CDIの@Dependentみたいなスコープ) 25
26.
@RestController @Slf4j public class HelloController
{ // Logger log = LoggerFactory.getLogger(HelloController.class); public void log(){ // … com.example.controllers.HelloController : hello と表示される log.info(“hello”); } } 4.3 コンパイル時に暗黙的に生成される ただ、lombokはもっとすごい 詳細は TERASOLUNA Server Framework を参照 http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/ja/Appendix/Lombok .html#lombokhowtouselogger 26
27.
4. Generics-based Injection @Service public
class HogeServiceImpl implements HogeService { @Resource(name = “listFoo”) private List<Foo> listFoo; @Resource(name = “listBar”) private List<Bar> listBar; } @Configuration public class AppConfig { @Bean(name = “listFoo”) public List<Foo> fooList(){…} @Bean(name = “listBar”) public List<Bar> fooList(){…} } 型ではなく名前で解決 @Autowired ではなく @Resource http://docs.spring.io/spring/docs/4.2.7.RELEASE/spring-framework-reference/htmlsingle/#beans- autowired-annotation-qualifiers ~4.2 27
28.
4. Generics-based Injection @Service public
class HogeServiceImpl implements HogeService { @Autowired List<Foo> listFoo; @Autowired List<Bar> listBar; } @Configuration public class AppConfig { @Bean public List<Foo> fooList(){…} @Bean public List<Bar> barList(){…} } 4.3 型で解決 28
29.
Web Improvements 29
30.
@GetMapping @PostMapping
@PutMapping @DeleteMapping @PatchMapping @OptionsMapping @HeadMapping 1. @RequestMapping の合成アノテーション 理由はあとで 30
31.
@GetMappingの例 @RequestMapping(value = “hello”
, method = RequestMethod.GET) public String hello(){ … } @GetMapping(value = “hello”) public String hello(){ … } 4.3 可読性があがった タイプ数が減った ~4.2 31
32.
2. HEAD, OPTIONS
の自動サポート $ curl -i -X OPTIONS http://localhost:8080/hello HTTP/1.1 200 X-Application-Context: application Allow: GET,HEAD Content-Length: 0 Date: Sun, 28 Aug 2016 07:32:23 GMT $ curl -i --head http://localhost:8080/hello HTTP/1.1 200 X-Application-Context: application Content-Type: text/plain;charset=UTF-8 Content-Length: 4 Date: Sun, 28 Aug 2016 07:40:25 GMT Allowヘッダに対応可能なHTTPメソッド が列挙される。 Controllerのメソッドは実行されない。 GETメソッドと同じ。 ただしレスポンスボディは空 Controllerのメソッドが実行される。 GET付与でHEADとOPTIONSが自動サポート 定義方法は@RequestMappingでも@GetMappingでもok 32
33.
3. Webスコープに関する @Scopeの合成アノテーション @RequestScope
@SessionScope @ApplicationScope スコープ 内容 prototype Bean参照ごとに毎回生成 request HTTPのリクエストごとに生成 session ユーザセッションごとに生成 singleton ApplicationContextごとに生成 application ServletContextごとに生成 広い 狭い 33
34.
@RequestScope の例 @Component @Scope(scopeName =
“request”, proxyMode = TARGET_CLASS) public class Foo { … } @Component @RequestScope public class Foo { … } 4.3 可読性があがった タイプ数が減った ~4.2 34
35.
他のスコープを作ってみる @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @Scope("prototype") public @interface
PrototypeScope { @AliasFor(annotation = Scope.class) ScopedProxyMode proxyMode() default ScopedProxyMode.TARGET_CLASS; } @Component @PrototypeScope public class Foo { … } 重要なのはここだけ 合成アノテーションは簡単 35
36.
4. @RestControllerAdvice @ControllerAdvice public class
GlobalHandler { @ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ResponseBody public Foo handle(){…} @RestControllerAdvice public class GlobalHandler { @ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) // @ResponseBodyが不要 public Foo handle(){…} 4.3 @ControllerAdvice + @ResponseBody ~4.2 36
37.
5. @RequestAttribute @RequestMapping(value =
“foo”, method = RequestMethod.GET) public String foo(HttpServletRequest request) { String param1 = (String) request.getAttribute(“param1”); … } @RequestMapping(value = “foo”, method = RequestMethod.GET) public String foo(@RequestAttribute(“param1”) String param1){…} 4.3 Servlet API に依存せずに取得できる ~4.2 37
38.
6. @SessionAttribute @RequestMapping(value =
“foo”, method = RequestMethod.GET) public String foo(HttpSession httpSession) { String param1 = (String) httpSession.getAttribute(“param1”); … } @RequestMapping(value = “foo”, method = RequestMethod.GET) public String foo(@SessionAttribute(“param1”) String param1){…} 4.3 Servlet API に依存せずに取得できる ~4.2 38
39.
7. @ModelAttribute(binding =
false) @ModelAttribute public Book setUpBook() { // おすすめの本の取得 return new Book(“spring”); } @PostMapping(“purchase”) public void purchase (BookForm form, @ModelAttribute(binding = false) Book book) { … } 4.3 リクエストパラメータのバインドを抑制する リクエストパラメータが バインドされる(titleはjavaee) リクエストパラメータをバインドせずに Modelの値を取得する(titleはspring) curl –X POST localhost:8080/purchase?title=javaee Bookクラス、BookFormクラスは titleフィールドを持つとする 39
40.
おわりに 40
41.
詳細はここ @Shimizuさんの日本語解説ブログ http://qiita.com/kazuki43zoo/items/172d132ff8f4ba098888#core- container-improvements JSUG勉強会 2016年その4 Spring
I/O報告会 池谷さんの発表 http://ikeyat.github.io/slides- publish/slides/201606XX_SpringIO2016Summary/#1 JJUG CCC 2016 Spring @makingさんの発表 http://sssslide.com/www.slideshare.net/makingx/jjugccc-cccgh5-whats- new-in-spring-framework-43-boot-14-pivotals-cloud-native-approach Spring Framework リファレンス http://docs.spring.io/spring/docs/current/spring-framework- reference/html/new-in-4.3.html 41
42.
42 Javaは、Oracle Corporation及びその子会社、 関連会社の米国及びその他の国における登録商標です。 TERASOLUNAはエヌ・ティ・ティ・データにおける登録商標です。 その他、記載されている会社名、商品名等は 各社の商標または登録商標である場合があります。
Baixar agora