最近のspringframework2013 #jjug #jsug #springframework

Post on 10-May-2015

2.118 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

最近のSpringFramework

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

槙 俊明 (@making)

自己紹介• @making

• 大手SIerでR&D

• JJUG幹事

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

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

今日のコンテンツ

• SpringFrameworkとは

• 最近のSpring Ecosystemを紹介

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

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

Springは今も進化中

Spring Ecosystemの紹介

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

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

今日のスコープ

Spring DI x AOP

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

• SpringEcosystemのコア

• JavaConfigサポート(@Configuration,

@Bean)

• No XML hell!

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

コード例

scope=singletonになるので注意

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

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

• Strutsからの移行も容易

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

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

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

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

コード例

コード例(REST版)

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

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

• カスタマイズ性も高い

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

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

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

• パスワードエンコード

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

• 3.2からJavaConfigサポート

コード例

• 時間がないので略・・

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の拡張

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

コード例

• 時間がないので略・・

Spring Data• 成熟度:★★☆

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

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

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

• Spring Data Commons

• Spring Data JPA

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

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

従来のJPAプログラミング

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

Spring Data JPAを使うと・・

• たったこれだけ!

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

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

Spring Data REST

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

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

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

• HypermediaLinkの作成

コード例

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

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

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

• サーバー組み込み

• Traditionalなwar作成も可能

• ApplicationContext作成不要

• オススメ設定のautoconfigure群

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

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

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

コード例

起動例• mvn package

• java -jar xxx.jar

オススメ構成でWeb

アプリをQuickStart

Webアプリのオススメ構成

Spring MVC Spring(DI, AOP, Tx)

Spring Data JPA

Spring Security

Browser/Client

UI & Presentation Layer Service Layer Persistence Layer

JPA

DB

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

• http://bit.ly/SpringTemplate

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

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

おわりに

• Springはまだまだ進化中

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

top related