最近のspringframework2013 #jjug #jsug #springframework

29
最近の SpringFramework JJUG ナイト・セミナー 「ビール片手にLT&納涼会 2013/08/19 俊明 (@making)

Upload: toshiaki-maki

Post on 10-May-2015

2.118 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

最近のSpringFramework

JJUG ナイト・セミナー 「ビール片手にLT&納涼会2013/08/19

槙 俊明 (@making)

Page 2: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

自己紹介• @making

• 大手SIerでR&D

• JJUG幹事

• 金魚本(http://amzn.to/JavaEE6)を一部翻訳

• なぜか畑違いのBootstrap3入門の本書いています

Page 3: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

今日のコンテンツ

• SpringFrameworkとは

• 最近のSpring Ecosystemを紹介

• オススメ構成でWebアプリをQuick Start

Page 4: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

SpringFrameworkとは• Javaでエンタープライズ開発するためのフルスタックフレームワーク

• 2004年から開発

• DI, AOP, Tx, Web(MVC), DataAccess, Security, Batch, Integration

• 重厚なJavaEEのアンチテーゼとして生まれたが、最近は逆転気味・・

• 一貫性のあるポリシー

• 2013年 開発元VMWare → Pivotalにスピンアウト

• 2013年 Springの象徴であるRob Jonsonが退社→TypeSafeへ

• 現在Spring4開発中

• Java8, JavaEE7サポート(WebSocket等)

http://bit.ly/Spring3Book

Page 5: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Springは今も進化中

Page 6: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring Ecosystemの紹介

Page 7: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring Ecosystem

Web

Base

DataAccess Batch EnterpriseIntegration

Security

IDE

RAD Starter

Social

Spring MVC

Spring WebFlow

Spring Mobile

Spring Roo

Spring Data JPA

Spring DataMongoDB

Spring Boot

SpringSource Tool Suite (STS)

Spring SocialTwitter

Spring SocialFacebook

Spring SocialGithub

Big Data

Spring Data Rest

Spring BatchSpring

Integration

Spring DI Spring AOP

Spring Security

Spring SecurityOAuth

Spring XD

Page 8: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring Ecosystem

Web

Base

DataAccess Batch EnterpriseIntegration

Security

IDE

RAD Starter

Social

Spring MVC

Spring WebFlow

Spring Mobile

Spring Roo

Spring Data JPA

Spring DataMongoDB

Spring Boot

SpringSource Tool Suite (STS)

Spring SocialTwitter

Spring SocialFacebook

Spring SocialGithub

Big Data

Spring Data Rest

Spring BatchSpring

Integration

Spring DI Spring AOP

Spring Security

Spring SecurityOAuth

Spring XD

今日のスコープ

Page 9: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring DI x AOP

• 成熟度:★★★ version: 3.2.4.RELEASE

• SpringEcosystemのコア

• JavaConfigサポート(@Configuration,

@Bean)

• No XML hell!

• JSR-330サポート(@Inject, @Named)

Page 10: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

コード例

scope=singletonになるので注意

Page 11: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring MVC• 成熟度:★★★ version: 3.2.4.RELEASE

• アクションベースな簡易なMVC Webフレームワーク

• Strutsからの移行も容易

• アノテーションで簡単リクエストマッピング(JAX-RSとほとんど同じ)

• ControllerとViewが奇麗に分離されるので、色々な出力形式に対応

• RESTもサポート(@RequestBody, @ResponseBody)

• JavaConfigサポート(web.xmlもなくせる)

Page 12: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

コード例

Page 13: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

コード例(REST版)

Page 14: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring Security• 成熟度:★★★ version: 3.1.4.RELEASE

• 設定ファイルベースで認証・認可

• カスタマイズ性も高い

• Form認証、Basic認証、JAAS認証、OpenID認証、LDAP認証、CAS認証・・・

• ユーザー情報は、DB、メモリ、設定ファイル・・・から

• URL認可、アノテーションでメソッド認可、JSPタグ認可

• パスワードエンコード

• SHA-2+ソルト+ストレッチのような汎用アルゴリズムだけでなくBCryptのようなパスワード用アルゴリズムもサポート(BCrypt推奨)

• 3.2からJavaConfigサポート

Page 15: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

コード例

• 時間がないので略・・

Page 16: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring Security OAuth• 成熟度:★☆☆ version: 1.0.0.RELEASE

• Spring SecurityにOAuth1, OAuth2による認証・認可機能を追加

• OAuth Provider

• grant_type=authorization_code,implicit,refresh_token,client_credentials, passwordの認証サーバーを設定ファイルのみで実現

• カスタムgrant_type

• OAuth Client

• REST Clientの拡張

• エラーメッセージやカスタムヘッダーなどの拡張性が乏しい

Page 17: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

コード例

• 時間がないので略・・

Page 18: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring Data• 成熟度:★★☆

• データアクセスの抽象化ライブラリ

• オブジェクトマッピング、Repository、Templateを提供

• いろいろなデータストアをサポートするサブプロジェクトからなる

• Spring Data Commons

• Spring Data JPA

• Spring Data MongoDB, Redis, Neo4j, REST, Hadoop, HBase, Solr, ...

• 各データストアにRepositoryやTemplateを提供してBoilerplateをなくす

Page 19: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

従来のJPAプログラミング

毎回同じようなコード・・・→

Page 20: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring Data JPAを使うと・・

• たったこれだけ!

• CRUD系のメソッド、ページング・ソート処理は自動で実装される

• JPAプログラミングの簡素化!

Page 21: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring Data REST

• 成熟度:★☆☆ version: 1.0.0.RELEASE

• Spring DataのRepositoryをREST APIにエクスポート(@RestResource)

• 現在はSpringMVCのみサポートしていrが、将来的にはServlet非依存を目指している

• HypermediaLinkの作成

Page 22: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

コード例

Page 23: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Spring Boot• 成熟度:☆☆☆ version: 0.5.0-M1

• Springアプリケーションを高速に開発して起動するためのプロジェクト?

• スタンドアローンでアプリケーションを起動できる(java -jar)

• サーバー組み込み

• Traditionalなwar作成も可能

• ApplicationContext作成不要

• オススメ設定のautoconfigure群

• 色々なpreconfiguredなJavaConfigが用意されており、特定の条件を満たすと読み込まれる

• 特定のクラスがクラスパス上にある場合など(@ConditionalOnClass)

• コード自動生成系でもRADツールでもない

Page 24: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

コード例

Page 25: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

起動例• mvn package

• java -jar xxx.jar

Page 26: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

オススメ構成でWeb

アプリをQuickStart

Page 27: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Webアプリのオススメ構成

Spring MVC Spring(DI, AOP, Tx)

Spring Data JPA

Spring Security

Browser/Client

UI & Presentation Layer Service Layer Persistence Layer

JPA

DB

Page 28: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

Webアプリの雛形を使ってQuick Start

• http://bit.ly/SpringTemplate

• STSのproject template機能でアプリの雛形生成

• Spring MVC + Spring Data JPA + Spring Security + Bootstrap3を使用したBest PracticeベースドなCRUDアプリが1分でできます(ダウンロード時間除く)

Page 29: 最近のSpringFramework2013 #jjug #jsug #SpringFramework

おわりに

• Springはまだまだ進化中

• Bootstrap3本でたら買ってください!