Mais conteúdo relacionado Semelhante a Grails紹介 (20) Mais de Uehara Junji (20) Grails紹介8. 特徴 つ
1. フレームワークのディストリビュー
ション
2. CoC
3. DRY原則
4. Groovy 12. フルスタック・フレームワーク
Grailsは標準で以下を含む
ORMフレームワーク: Hibernate
DIxAOPコンテナ: Spring
テスティングフレームワーク: JUnit, canoo WebTest
MVCフレームワーク: Spring MVC, Webflow
ロギング: Log4j
HTMLレイアウト: SiteMesh
試験用組み込みDB HSQLDB
試験用組み込みServletコンテナ: Jetty
バッチ処理フレームワーク: Quartz
プラグインで拡張可
インストーラ一発でインストール 15. CoCの例(1)
grails-app/taglib配下に
“HogeTaglib.groovy”という名前のクラス
定義を置くとGSPカスタムタグとして動作
HELLO
HogeTaglib.groovy
Grails
class HogeTaglib {
def mytag = {
test.gsp
out << “HELLO”
}
} <g:mytag />
taglib/ views/
※GSP=Groovy Server Pages. Groovy版JSP 16. CoCの例(2)
クラス名が“Service”で終わる
クラスは自動的にインスタンス
化されて依存性注入
HogeController.groovy HogeService.groovy
class HogeTaglib { class HogeService {
HogeService hogeService void sayHello() {
: }
hogeSrivice.sayHello()
}
} 19. DRY原則適用の例(1)
唯一のモデルクラス定義がさま
ざまな処理の本ネタに
Grails
class Book { 自動生成 Spring Spring bean
String title
自動生成
Person author
} Hibernate
RDBMS
自動生成
1回だけ
自動生成 BOOK TABLE
手書き Scaffolded
Views id title author_id
Scaffolded 0 “hoge” 3
Controllers
1 “fuge” 7 20. DRY原則適用の例(2)
定型処理コマンド群と雛形の自
動生成
grails <command>
bootstrap bug-report clean
compile console create-app
create-controller create-domain-class create-integration-test
create-plugin create-script create-service
create-tag-lib create-unit-test doc
generate-all generate-controller generate-views
help install-plugin install-templates
list-plugins package-plugin package
plugin-info release-plugin run-app-https
run-app set-proxy set-version
shell stats test-app
upgrade war 25. Groovyコード例(2)
Java
import java.util.*;
public class HashMapTest {
public static void main(String[] arg) {
Map<String,Integer> map = new HashMap<String,Integer>();
map.put(quot;太郎quot;, 35);
map.put(quot;次郎quot;, 30);
map.put(quot;三郎quot;, 20);
for (Map.Entry<String,Integer> entry : map.entrySet()) {
System.out.println(entry.getKey()+quot;:quot;+entry.getValue());
}
}
}
Groovy
map = [太郎:35, 次郎:30, 三郎:20]
map.each { println quot;${it.key}:${it.value}quot; } 27. Grailsの構成
ユーザ
記述
Domain Service Taglib Controller View
コード Test Cases
Groovy Class Groovy Class Groovy Groovy Class GSP
Groovyランタイム
ユーザ
Spring Hibernate filters Logging scaffold 非標準 非標準
Plugin Plugin Plugin Plugin Plugin
・・・ Plugin Plugin
記述
コア層 Plugin
Grailsプラグイン基盤
Canoo
下位層 Spring Hibernate Log4J Jetty Sitemesh JUnit
Webtest
HSQLDB
JDK
Java VM 28. Grails on Java EE
コマンドラインから
> grails war
と叩くと.warが生成されるので
TomcatやWebsphareにでもデプロ
イすればよい
ここで生成されるwarは
「production releaseバージョン」で
あり、動的性質が除去されている
(設定ファイルをいじっても反映されない) 29. プロジェクト構成の標準化
grails create-
appでここ以 Javaコードも
下の構造が ここに置けば
生成される。 再起動無しで
自動コンパイ
Grailsアプ ル・更新可能
リとしての
基本構造
テスト
コードとテ
ストレ
メッセージバ ポートは
ンドルとか。 ここに。
grails warで
生成される
Jarのための
情報 30. 他にもいろいろ(1 of 2)
DSL
ORM-DSL、悲観的ロック、キャッシュ制御
Spring DSL
テスティング関係
テスト用RDBMS(HSQLDB)
サーブレットエンジン(Jetty)
シナリオベースのWebテスティングフレームワークCanoo Webtest
HTTPベースのHTMLレイアウトエンジンSitemesh
DB連携テスト用の自動テスティング(integration test)
テスティングフレームワーク連携(JUnit)
GORM: Grails ORM
Hibernateを動的かつ簡易に扱うためのラッパー
ダイナミックファインダー: 実行時に生成されるfinderメソッド群(findBy,
findWhere, )
DAO不要
継承、1:多、多:多関連サポート 31. 他にもいろいろ(2 of 2)
Webインターフェース
レイアウトエンジンSiteMesh
カスタムURLマッピング
Webflow、カンバセーション、フラッシュスコープ
ライブラリ独立AJAX(GWT、YUI、DoJoプラグイン..)
GSPタグリブ: JSPカスタムタグと同等だがはるかに簡単で便利
Pluginシステム
Grails = プラグインの集合体
依存性情報を伴う拡張モジュール
一発オンラインインストール
多種多様なプラグイン
Spring Security(Acegi plugin)
オンラインアップデート、更新反映
アプリ再起動を不要にするための更新検出/伝播制御、 リロードなどの枠組み
EJB3連携
スキャフォルディング
CRUDビューの動的(もしくは静的)生成