spring i/o 2015 報告
TRANSCRIPT
![Page 1: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/1.jpg)
Copyright©2015 NTT corp. All Rights Reserved.
Spring I/O 2015 報告2015 年 6 月 22 日 @ Spring I/O 2015 報告会
岩塚 卓弥ソフトウェア革新技術プロジェクトNTT ソフトウェアイノベーションセンタ
![Page 2: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/2.jpg)
2Copyright©2015 NTT corp. All Rights Reserved.
• 名前:岩塚 卓弥
• 所属: NTT ソフトウェアイノベーションセンタ
• 研究分野:ソフトウェア工学• ソフトウェア開発の生産性向上を目指す取り組みの一つと
して、 AP フレームワークの整備に取り組む
• その他:• 名古屋出身• プログラミング言語 / ソフトウェアの形式的検証技
術に関心• Spring については newbie なのでお手柔らかに!
自己紹介
![Page 3: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/3.jpg)
3Copyright©2015 NTT corp. All Rights Reserved.
Spring 4.2 編
![Page 4: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/4.jpg)
4Copyright©2015 NTT corp. All Rights Reserved.
• Core Container の改善
→ Modern Java Component Design with Spring Framework 4.2
• データアクセス の改善
• JMS の改善
• Web の改善
→ Spring4 Web Apps
• WebSocket メッセージング の改善
→ Real-time with Spring: SSE and WebSockets
• テスト の改善
→ Testing with Spring 4.x
Spring 4.2 の新機能と改善
From https://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/htmlsingle/#new-in-4.2
![Page 5: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/5.jpg)
5Copyright©2015 NTT corp. All Rights Reserved.
WEB の改善SPRING 4.2 編
![Page 6: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/6.jpg)
6Copyright©2015 NTT corp. All Rights Reserved.
•HTTP ストリーミング と SSE
•CompletableFuture のサポート
•CORS のビルトインサポート
•HTTP キャッシュの改善
•JavaScript View テンプレート
Web の改善
![Page 7: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/7.jpg)
7Copyright©2015 NTT corp. All Rights Reserved.
• カスタム @RequestMapping
• Request Mapping の実行時制御
• RequestBodyAdvice
• @ExceptionHandler の引数に HandlerMethod
• HttpHeaders の Byte-range リクエストのサポート
• UriTemplateHandler
• MvcUriComponentsBuilder の改善
Web の改善
![Page 8: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/8.jpg)
8Copyright©2015 NTT corp. All Rights Reserved.
HTTP ストリーミング と SSE
Web の改善
![Page 9: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/9.jpg)
9Copyright©2015 NTT corp. All Rights Reserved.
HTTP ストリーミング と SSE
サーバからクライアントにイベントを PUSHHTTP リクエスト:イベント が 1: 多
![Page 10: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/10.jpg)
10Copyright©2015 NTT corp. All Rights Reserved.
HTTP ストリーミング と SSE
サーバからクライアントにイベントを PUSHHTTP リクエスト:イベント が 1: 多
HTTP リクエスト
![Page 11: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/11.jpg)
11Copyright©2015 NTT corp. All Rights Reserved.
HTTP ストリーミング と SSE
サーバからクライアントにイベントを PUSHHTTP リクエスト:イベント が 1: 多
HTTP リクエスト
HTTP レスポンス
![Page 12: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/12.jpg)
12Copyright©2015 NTT corp. All Rights Reserved.
HTTP ストリーミング と SSE
サーバからクライアントにイベントを PUSHHTTP リクエスト:イベント が 1: 多
HTTP リクエスト
PUSH(Event1)
Event1
HTTP レスポンス
![Page 13: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/13.jpg)
13Copyright©2015 NTT corp. All Rights Reserved.
HTTP ストリーミング と SSE
サーバからクライアントにイベントを PUSHHTTP リクエスト:イベント が 1: 多
HTTP リクエスト
Event1Event2
PUSH(Event2)
HTTP レスポンス
![Page 14: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/14.jpg)
14Copyright©2015 NTT corp. All Rights Reserved.
HTTP ストリーミング と SSE
サーバからクライアントにイベントを PUSHHTTP リクエスト:イベント が 1: 多
…
HTTP リクエスト
Event1Event2…
HTTP レスポンス
![Page 15: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/15.jpg)
15Copyright©2015 NTT corp. All Rights Reserved.
HTTP ストリーミング の使い方
ResponseBodyEmitter を作成
イベントを PUSH
何度も PUSHやめる
作成した emitter を返す
その後、別のスレッドで…
![Page 16: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/16.jpg)
16Copyright©2015 NTT corp. All Rights Reserved.
•SSE(Server-Sent Events)• W3C 勧告• PUSH されるイベントのフォーマットが定められている
SSE の使い方
ResponseBodyEmitter の代わりにSseEmitter を作成
SSE のフォーマットイベントを PUSH
![Page 17: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/17.jpg)
17Copyright©2015 NTT corp. All Rights Reserved.
• IE は SSE 未対応
• 以下のような用途には向かない• オンラインゲーム• コレボレーションツール• 金融アプリケーション
注意点
これらの場合には WebSocket の使用を検討
![Page 18: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/18.jpg)
18Copyright©2015 NTT corp. All Rights Reserved.
CompletableFuture のサポート
Web の改善
![Page 19: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/19.jpg)
19Copyright©2015 NTT corp. All Rights Reserved.
Java8 で導入された非同期処理用のクラス豊富な機能を持つ
• コールバック指定• タイムアウトの設定• 実行の中断• 複数の並行処理の同期 等
CompletableFuture
![Page 20: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/20.jpg)
20Copyright©2015 NTT corp. All Rights Reserved.
DeferredResult と CompletableFuture
DeferredResult CompletableFuture
isSetOrExpired isDone
onCompletion whenComplete
onTimeout exceptionally
setResult complete
setErrorResult completeExceptionally
DeferredReslut でできることはだいたい CompletableFuture でもできる
![Page 21: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/21.jpg)
21Copyright©2015 NTT corp. All Rights Reserved.
リクエストに対して非同期処理の結果を返す
Before DeferredResult を返す
その後、別のスレッドで…
![Page 22: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/22.jpg)
22Copyright©2015 NTT corp. All Rights Reserved.
リクエストに対して非同期処理の結果を返す
After CompletableFuture を返す
その後、別のスレッドで…
![Page 23: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/23.jpg)
23Copyright©2015 NTT corp. All Rights Reserved.
CORS のビルトインサポート
Web の改善
![Page 24: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/24.jpg)
24Copyright©2015 NTT corp. All Rights Reserved.
• 同一オリジンポリシー• セキュリティのため、オリジンの異なるリソースへ
の AJAX 等の通信を禁止
•CORS• 異なるオリジンへのリソースへ安全にアクセスする
ために定められた仕様
CORS(Cross Origin Resource Sharing)
http://xxx.com:80 https://yyy.org:8080
HTML を取得AJAX 等
ドメイン , ポート等
リクエスト
オリジン A
オリジン B
オリジン C選別する
![Page 25: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/25.jpg)
25Copyright©2015 NTT corp. All Rights Reserved.
CORS のサポート
@CrossOrigin
After
Before サードパーティのライブラリ等を利用
@CrossOrigin でクラス / メソッド単位に設定
例: CORS Filter(http://software.dzhuvinov.com)
web.xml で一括フィルタリング
![Page 26: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/26.jpg)
26Copyright©2015 NTT corp. All Rights Reserved.
• JavaConfig
•XML
一括でフィルタリングしたいとき
CorsRegistory にマッピングを追加
mvc:cors にマッピングを追加
![Page 27: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/27.jpg)
27Copyright©2015 NTT corp. All Rights Reserved.
HTTP キャッシュの改善
Web の改善
![Page 28: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/28.jpg)
28Copyright©2015 NTT corp. All Rights Reserved.
Cache-Control ヘッダ
HTTP レスポンスのヘッダでコンテンツのキャッシュの扱いを指定する
Cache-Control: no-store
例:キャッシュしない
Cache-Control: max-age=3600, private
キャッシュしたレスポンスは 3600 秒間有効キャッシュを他のユーザと共有しない
![Page 29: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/29.jpg)
29Copyright©2015 NTT corp. All Rights Reserved.
Cache-Control の設定方法
Before WebContentInterceptor に設定
After 新しく追加された CacheControl ビルダを利用
プロパティをチェイン
![Page 30: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/30.jpg)
30Copyright©2015 NTT corp. All Rights Reserved.
JavaScript View テンプレート
Web の改善
![Page 31: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/31.jpg)
31Copyright©2015 NTT corp. All Rights Reserved.
JavaScript View テンプレート
JavaScript のテンプレートエンジンをサーバ側で実行1. 初期ページ読み込み速度の改善
→ 特にリソースの限られたモバイル環境で影響大
2. クライアント / サーバ のコード共通化→ 最近流行りの Isomorphic JavaScript
3. SEO 対策→ JavaScript を解釈しないロボットでも コンテンツを取得できる
![Page 32: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/32.jpg)
32Copyright©2015 NTT corp. All Rights Reserved.
•Handlebars http://handlebarsjs.com/
•EJS http://www.embeddedjs.com/
•Mustache https://mustache.github.io/
•React https://facebook.github.io/react/
JavaScript View テンプレート
![Page 33: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/33.jpg)
33Copyright©2015 NTT corp. All Rights Reserved.
• Controller
• テンプレート (Handlebars)
使い方
コンテンツの設定
“Page Title” に置換される
![Page 34: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/34.jpg)
34Copyright©2015 NTT corp. All Rights Reserved.
Config の書き方
ScriptTemplateViewResolver
ScriptTemplateConfigurer
JRuby, Jython も(JSR223)
![Page 35: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/35.jpg)
35Copyright©2015 NTT corp. All Rights Reserved.
WEBSOCKET メッセージング の改善
SPRING 4.2 編
![Page 36: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/36.jpg)
36Copyright©2015 NTT corp. All Rights Reserved.
• メッセージに対する @JsonView のサポート
•接続ユーザ情報の取得
• サーバをまたがる User Destination の解決
• StompSubProtocolErrorHandler
• グローバルな @MessageExceptionHandler
• SimpleBrokerMessageHandler の改善
WebSocket メッセージングの改善
![Page 37: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/37.jpg)
37Copyright©2015 NTT corp. All Rights Reserved.
• STOMP クライアント over TCP/WebSocket
• @SendTo, @SendToUser の改善
•戻り値に ListenableFuture/CompletableFuture
• XML ペイロードのメッセージ / オブジェクト変換
WebSocket メッセージングの改善
![Page 38: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/38.jpg)
38Copyright©2015 NTT corp. All Rights Reserved.
メッセージに対する@JsonView のサポート
WebSocket メッセージング の改善
![Page 39: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/39.jpg)
39Copyright©2015 NTT corp. All Rights Reserved.
• @MessageMapping と @SubscribeMapping のメソッドの戻り値に @JsonView が使用可能に
•今までは @ResponseBody でしか使えなかった→ Web の機能への追従が進む
メッセージに対する @JsonView のサポート
グループの指定
グループの指定
@JsonView(≧4.1) のおさらい
![Page 40: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/40.jpg)
40Copyright©2015 NTT corp. All Rights Reserved.
テストの改善SPRING 4.2 編
![Page 41: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/41.jpg)
41Copyright©2015 NTT corp. All Rights Reserved.
• SpringJUnit4ClassRunner から Rule への置き換え
• ContextCache
• TestContext 周りの改善
• ReflectionTestUtils の static フィールドアクセス
• @DirtiesContext の改善
• 組み込み DB の名前周りの改善
• AopTestUtils による Proxy のターゲットの取得
テストの改善
![Page 42: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/42.jpg)
42Copyright©2015 NTT corp. All Rights Reserved.
SpringJUnit4ClassRunner から Rule への置き換え
テストの改善
![Page 43: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/43.jpg)
43Copyright©2015 NTT corp. All Rights Reserved.
• Spring の機能を JUnit のテストケース内で使用できるようにするテストランナー
• テストケース内で DI したいときなどに用いる
SpringJUnit4ClassRunner
テストランナーはひとつしか指定できない
![Page 44: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/44.jpg)
44Copyright©2015 NTT corp. All Rights Reserved.
別のテストランナーと併用したいとき
Before@Before メソッドで TestContextManager を作成
任意のテストランナー
TestContextManager
![Page 45: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/45.jpg)
45Copyright©2015 NTT corp. All Rights Reserved.
別のテストランナーと併用したいとき
After @Rule と @ClassRule を使う
必ず二つとも記述すること
任意のテストランナー
![Page 46: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/46.jpg)
46Copyright©2015 NTT corp. All Rights Reserved.
セッション紹介編
![Page 47: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/47.jpg)
47Copyright©2015 NTT corp. All Rights Reserved.
タイトル カテゴリ
Building “Bootful” Applications with Spring Boot Boot
Building Microservices with Spring Cloud and Netflix OSS Cloud
Developing and Maintaining Spring-based Enterprise Software: Lessons Learned
事例
Static Resources Management with Spring and Single Page Applications
Web
Inside http://spring.io - a production spring reference application
事例
Real-time with Spring: SSE and WebSockets Web
Testing with Spring 4.x Test
Performance Testing Crash Course その他
Everything you need to know about Java Classloaders その他
Scaling real time search and analytics with Elasticsearch その他
Improving your (legacy) Application with Spring その他
紹介セッション一覧
![Page 48: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/48.jpg)
48Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Josh Long
• デモを交えながら Spring Boot を紹介• Spring Project Initializer
• Web 上のインタフェースでプロジェクト雛形を作成• CommandLineRunner
• コマンドライン引数を与えて実行• REST
• ビューには Thymeleaf を使用• Spring Boot Actuator
• アプリケーションのモニタリング
• 他のセッションでも Boot は当たり前のように使用
Building “Bootful” Applications with Spring Boot
![Page 49: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/49.jpg)
49Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Dave Syer
• マイクロサービスの協調動作のためのボイラープレートに Spring Cloud × Netflix OSS を利用
• 設定の管理• サービス探索• ロードバランサ•耐障害性• …
Building Microservices with Spring Cloud and Netflix OSS
![Page 50: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/50.jpg)
50Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Dave Syer
• マイクロサービスの協調動作のためのボイラープレートに Spring Cloud × Netflix OSS を利用
Building Microservices with Spring Cloud and Netflix OSS
![Page 51: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/51.jpg)
51Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Dave Syer
• マイクロサービスの協調動作のためのボイラープレートに Spring Cloud × Netflix OSS を利用
Building Microservices with Spring Cloud and Netflix OSS
Histrix Ribbon
Eureka Zuul
設定用のアノテーションを提供e.g. @EnableEurekaClient,
@HystrixCommandhttp://cloud.spring.io/spring-cloud-netflix/
![Page 52: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/52.jpg)
52Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Mortiz Kleine
• ドイツの CMS ベンダによる Spring 利用時のノウハウ
• XML で設定し、自作の ContextInitializer で読み込む
• https://gihub.com/mkleine/spring-component-loader
• カスタマイズした XmlBeanDefinitionReader を使用
• 複数の設定ファイルで同一リソースをインポートする際の冗長なロードの問題 (SPR-1142) を避ける
• 複雑になるので AOP は使わない
Developing and Maintaining Spring-based Enterprise Software: Lessons Learned
![Page 53: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/53.jpg)
53Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Brian Clozel@
•静的リソースの扱いについてのワークショップ• < 4.1 ( ワークショップ 1)
•任意の場所にリソースを配置
• Cache-Control によるキャッシュ管理
Static Resources Management with Spring and Single Page Applications(Workshop)
https://github.com/bclozel/resource-handling-workshop
![Page 54: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/54.jpg)
54Copyright©2015 NTT corp. All Rights Reserved.
• ≧ 4.1 ( ワークショップ 2[AngularJS], 3[ES6])
• Webjar のビルド• リソースを target/classes/static に配置• 開発時はプロファイルを切り替えローカルファイル
を参照• fingerprinting によるキャッシュ
• ファイル名ベースのバージョニング• Minify 等はクライアントサイドのツールを使う
•講演者: Brian Clozel@
•静的リソースの扱いについてのワークショップ
Static Resources Management with Spring and Single Page Applications(Workshop)
https://github.com/bclozel/resource-handling-workshop
![Page 55: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/55.jpg)
55Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Brian Clozel
• Spring の公式サイト (http://spring.io) 自体のプロジェクト (Sagan) について
• クライアントサイドリソースの管理
• Spring Boot の利用
• Java8(lambda, stream) によるリファクタリング
• Spring IO Platform への移行
• HipChat を利用したコミュニケーション
• Blue/Green デプロイメント
Inside http://spring.io - a production spring reference application
![Page 56: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/56.jpg)
56Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Sergi Almar
• Spring における SSE, WebSocket の利用法を紹介
• SSE, WebSocket についての解説
• Spring 4.2 における SSE の利用法•本日解説済み!
• Spring の WebSocket と JSR-356 の違い• SockJS によるフォールバック• STOMP のサポート• セキュリティ
Real-time with Spring: SSE and WebSockets
![Page 57: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/57.jpg)
57Copyright©2015 NTT corp. All Rights Reserved.
•講演者: San Brannen
• Spring4.0, 4.1 のテスト関連機能の紹介• Spring4.2 で導入される機能の紹介
•本日解説しなかった内容• @DirtiesContext に before method, before class
を追加
• 組み込みデータベースに対する固有名の生成• <jdbc:embedded-database /> に database-name 属性
を追加
• ReflectionTestUtils で static なフィールドにアクセス
Testing with Spring 4.x
![Page 58: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/58.jpg)
58Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Dustin Whittle
• 多数のアプリケーションの性能試験ツール / サービスの紹介
• 汎用• Apache Bench• Seige• Apache JMeter• Multi-Mechanize
• クラウド / 分散環境• Bees with Machine Guns• locust.io
• クライアントサイド• Google PageSpeed• WBench
Performance Testing Crash Course
・パフォーマンストラッキング ・ Statsd + Graphite + Grafana ・webpagetest.org ・ SiteSpeed.io ・ APP DYNAMICS・ Load testing ・ Apica ・ BLITZ ・ BlazeMeter
とにかく沢山紹介
![Page 59: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/59.jpg)
59Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Oleg Selajev
• クラスローダの基本動作とエラー発生時の対処
•詳細は割愛
Everything you need to know about Java Classloaders
NoClassDefFoundErrorNoSuchMethodError 等
![Page 60: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/60.jpg)
60Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Clinton Gormley
• Elasticsearch の動作とスケールアウトの仕組み
•詳細は割愛
Scaling real time search and analytics with Elasticsearch
![Page 61: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/61.jpg)
61Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Marten Deinum
• モノリシックな古い Spring アプリケーションをリファクタリングするデモ
• Spring 2.0.8 → 3.2.13 へのアップグレード• SimpleFormController への置き換え
• テストケースを書く
• サービスを機能で分割し,パッケージも分ける• Event を使って結合を疎に
• 分割したサービスを独立したアプリケーションに• Boot を使う
• Controller をリファクタリング• @Controller と @RequestMapping に書き換える
Improving your (legacy) Application with Spring
![Page 62: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/62.jpg)
62Copyright©2015 NTT corp. All Rights Reserved.
•講演者: Marten Deinum
• モノリシックな古い Spring アプリケーションをリファクタリングするデモ
• Spring 2.0.8 → 3.2.13 へのアップグレード• SimpleFormController への置き換え
• テストケースを書く
• サービスを機能で分割し,パッケージも分ける• Event を使って結合を疎に
• 分割したサービスを独立したアプリケーションに• Boot を使う
• Controller をリファクタリング• @Controller と @RequestMapping に書き換える
Improving your (legacy) Application with Spring
密結合,大規模 → 疎結合,小規模適切な手順を踏めばアップグレードは怖くない!
![Page 63: Spring I/O 2015 報告](https://reader033.vdocuments.net/reader033/viewer/2022061607/55cc6246bb61eb1c7e8b456b/html5/thumbnails/63.jpg)
63Copyright©2015 NTT corp. All Rights Reserved.
http://www.springio.net
リファレンス
スライドへのリンク