Spring Fest 2017 に行ってきた #jsug

簡単に所感をまとめます。

springfest2017.springframework.jp

What's New in Spring

会場に到着したらすでに翻訳機がなくなってたのでスライドから雰囲気だけ感じ取る。内容は Spring 5 と Spring Boot 2.0 について。Spring MVC ではこう書いていたコードが Spring WebFlux ではこう書くよというデモ。spring-boot-starter-webflux を依存に入れるだけでランタイムが Tomcat から Netty に変わる。あとは、Spring WebClient の話。Spring WebClient Scatter Gather ってなんだろうか。要復習。

Introduction to Spring WebFlux

www.slideshare.net

こちらも Spring WebFlux の話。100程度のリクエストを10スレッドくらいで処理できる。プロセッサーの数だけスレッドを立ち上げるらしい。Spring MVC のコードでランタイムを Netty に変えるだけで Reactive の恩恵を受けられるっぽい。flatMap は裏で subscribe してくれるが、map は subscribe してくれないので注意が必要。WebFlux を使うときは Blocking な処理を書かないこと。どうしても Blocking な処理が必要なら別スレッドで処理させる。RDBを使うシステムの場合、JDBCが Blocking なので別のスレッドで処理させるか、非同期JDBCのサポートを待つのがよい。

ところで、Blocking/Non-blocking はスレッドを占有するかしないか、同期/非同期は別スレッドで処理させるかどうか、と理解したんですが合ってるんだろうか...。

Spring Security 5 解剖速報

www.slideshare.net

Spring Security 5 では、WebFlux と OAuth 2.0 が対応される。従来の Spring Security は Servlet API に依存しているが、WebFlux では Servlet API に依存しない。ただし、Servlet API 依存のアーキテクチャがなくなるわけではない。Spring WebTestClient を使うと WebFlux のエンドポイントをテストできる。これまでは各サブプロジェクトが OAuth2 対応していたが、今後は Spring Security が OAuth2 をサポートし、サブプロジェクトは Spring Security の機能を使う。

Struts -> Spring 移植のテクニックとノウハウを公開

struts-config.xml や validation.xml から Controller のスケルトンコードや Form クラス/バリデーションを自動生成する。移植元のアプリで独自に拡張されたものは手で移植する。フレームワークの移植では不具合修正やリファクタリングに手を出さないことがポイント。

自分もフレームワーク移植をやりましたが、バリデーションロジックとかの移植は割と大変でした。自動化については移植元のアプリの作りにかなり影響されると思うし、きれいに作られているとは限らないので結局は手作業が多くなるんではないかと思っています。

また、フレームワークの移植では再現性を重視するようですが、重視し過ぎるのもどうなのかなと思っています。再現性を重視するあまりオリジナルのフレームワークの機能拡張に追随できなくなったりしないだろうか、移植先のフレームワークのお作法に従う方がいいのではないかと考えてしまうわけです。まぁ、コストはかかるし、そううまくはいかないかもだけど。

Pivotal認定講師が教える!Spring Data JPAによるデータアクセス徹底入門

www.slideshare.net

JPA の特徴やハマりどころの話。めっちゃ分かり易かった。要復習。

Spring と TDD

www.slideshare.net

Spring にはテストの仕組みがたくさん用意されているよという話。いろいろなパターンのテストの仕方が説明されていてよかったが、TDD はあまり関係なかった。ちょうど テスト駆動開発 を読んでるところだったので少し残念。

Spring BootとSpring Cloudで始めるマイクロサービス

前半はマイクロサービスの話、後半は Spring Boot と Spring Cloud の話。せろさんのマイクロサービスの話は何回か聴いたことはあるが、分かり易いし納得感がある。

その他

あとで読む。