GrailsでSpringを
Groovyにしよう!
JSUG+JGGUG合同勉強会
2009年6月24日
def speaker = new Cast(name:”T.Yamamoto”,version:”JSG2UG-2009-06-24”)
自己紹介
名前:山本 剛 (やまもとつよし)
所属:株式会社ニューキャスト
組版屋、印刷系Webアプリ開発など。
案件は90%Grailsを使ってます。
JGGUG(じぇいがぐ) 名古屋支部 担当です。
「Grails徹底入門」9-11章を書き...
おさらい
Grailsとは?
よく聞く説明
「Groovyで実装されたRuby on Rails」!?
  
Java+Groovyで実装された、CoC、DRYの概念を取り
入れた(‘RoR’にインスパイアされた)、Webアプリケーション開発環境。
基礎...
Grailsの構成図
GrailsGrailsGrails
Groovy
Spring Hibernate SiteMesh
Groovy
基礎部分はJava(+Groovy)基礎部分はJava(+Groovy)基礎部分はJava(+Groov...
デモ
grails create-app demo
cd demo
grails create-domain-class Book
grails create-controller Book
grails run-app
今日はこれやりません
本日のテーマ!
GrailsとSpringの関係
∼BeanBuilderへたどりつくまで。
BeanBuilder(ビーンビルダ)解説!←本日のメイン
GrailsでSpringをGroovyに使う!
GrailsにSpringビーンを追加し...
BeanBuilderって?
いろいろ話す前に、まずはザックリこんな感じ。
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
...
何故,
BeanBuilder
!?
GrailsとSpringの関係
今さら言うまでもなく、
Grailsの中はSpringがいっぱい!
基礎をSpringフレームワークが支えています。
Grailsには、Springビーンを簡単に追加する仕組みがあり
ます。 → 「Grails...
src/templates/war/web.xml
<web-app version="2.4"
...
<context-param>
<param-name>contextConfigLocation</param-name>
<param-...
web-app/WEB-INF/applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org...
applicationContext.xmlの中身
grailsApplication - GrailsApplicationFactoryBean
pluginManager - GrailsPluginManagerFactoryBean
...
その中で、最も重要なのは、
grailsApplication
GrailsApplicationFactoryBean
GrailsApplicationFactoryBean
Grailsの最初のバージョンからあります。
GroovyファイルからGrailsアプリケーション用オブジェ
クトを生成するファクトリビーン。
リソースが読みこまれ、ここから様々なGra...
grailsApplicationとビーン生成の関係
この関係を調べることでBeanBuilderって何か解るかも!
いろいろソースを探ってたら
BeanBuilder誕生の理由?が解った気がしたから・・・
但し、推測
Grailsの裏側解説(簡易版)
groovy
groovy
groovy
groovy
groovy
groovy
groovy
groovy
grails-appの中
grails起動
リソースロード
grailsApplicationに収...
歴史をさかのぼると、v0.2時代はGrailsのGroovy(CoC)
な部分は複雑だった。
Grailsの裏側解説(簡易版)
GrailsPlugin
grailsApplication
grails-app以下のgroovyファイル達
gr...
少し歴史など。
applicationContext.xmlの内容ヒストリー
grailsApplication
grailsResourceHolder
characterEncodingFilter
0.1
pluginMetaManage...
Grailsでのビーン生成と、BeanBuilder誕生まで
CoCを実現するために。
0.1時代。- SpringConfigクラスで全てを行っていた。
0.2-0.3.1時代。
プラグインの原型が登場。
この時代は、インターフェイスGrail...
簡単にまとめると
Grailsに柔軟な拡張性を実装
0.4からのGrailsプラグイン
深い所:ビーン生成などは、
0.2からの仕組みだと敷居が高くて大変だね!
ぢゃあ、ビーンも解りやすく
ぐるーびぃーに!DSLに!
BeanBuilder誕生!
BeanBuilder
実装クラス:grails.spring.BeanBuilder
ApplicationContextを構築するための
DSL(Domain Specific Language)です。
直感的でわかりやすくSpringビーン...
BeanBuiler:単独での使い方
Grailsアプリケーション以外でも
使用できるように設計されているので。
import org.springframework.context.ApplicationContext
import grai...
BeanBuiler基本書式
基本!
someBean(MySomeBean,"引数1",2 ,[3]){bean->
bean.singleton = false
bean.factoryMethod = "getInstance"
field...
クロージャの最初の引数は AbstractBeanDefinition
org.springframework.beans.factory.support.
AbstractBeanDefinition
  → ビーン構成用インスタンス
    <...
■Factoryメソッドの使用例
withFactoryMethod(BeanWithFactoryMethod){bean->
bean.factoryMethod = "getInstance"
bean.scope = "prototyp...
ビーンスコープ
ビーンスコープ - 基本は全てシングルトンです。
prototype
flash
flow
conversation
session
singleton
withFactoryMethod(BeanWithFactoryMethod...
ビーンの参照
ApplicationContextで管理されている他のビーンへの参照
xml定義での <ref bean="anotherBean"/>
ref("anotherBean") と書きます。
ref("anotherBean",t...
■ビーンの参照
beanA(BeanA){
name="bean a"
}
■ref("...")で指定する
beanB(BeanB){
name="bean b"
parent=ref("beanA")
}
■ref("...")は、省略可能...
Anonymous Inner Beans
匿名インナービーン
exampleInner(ExampleBean2){
bean = {ExampleBean b ->
name="My First Inner Bean"
num=24
}
}...
Beanの継承、抽象ビーン
<bean id="exampleAbstractBeanNoClass" abstract="true">
<property name="name" value="abstract bean"/>
<proper...
Beanの継承、抽象ビーン
exampleAbstractBeanNoClass {
name="abstract bean"
num = 20
}
(SomeClass)クラスの指定を無くす
exampleNoCls(ExampleBean)...
動かしてみる
Grails徹底入門10章を参考に!
Gantは1.6.1 Binary, standalone installationを使用
執筆時と一部仕様が変わっているので修正。
build.gantの中の Ant → ant に変更。
...
BeanBuilderの
利用方法はおさえたので
Grailsで
Springビーンを
Groovyに使う!
GrailsでSpringビーンをGroovyに使う!
GrailsアプリケーションにSpringビーンを追加。
正しい方法は3つ
resources.xmlに記述。
resources.groovyにBeanBuilderで記述。
Grail...
resources.xml
grails-app/conf/spring/resources.xmlに
xmlでのビーン定義をそのまま書く。
デモ
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE...
resources.groovy
grails-app/conf/spring/resources.groovyに
BeanBuilderで記述。
デモ
package bean
class ExampleBean {
def name
def...
実装変更に使える
grails-app/conf/spring/resources.groovy( or xml)で
同名称(id)のビーンが追加された場合は、
内容が上書きされます。
例えば、既に定義されている “dataSource”ビーン...
GrailsプラグインでdoWithSpring
再利用しちゃいましょう!
class JggugBeanGrailsPlugin {
// the plugin version
def version = "0.1"
....
def doW...
SpringでGrailsを
使ってGroovyに!
applicationContext.groovy!?
Grailsのソースリポジトリにコッソリ!?置いてある。
grails-sample/standalone-beanbuilder 若干古いです。
内容
<context-param>のc...
GrailsのGORMを使う!
スタンドアロンでGORMが使用可能!
Spring MVCでのサンプル、
GRAILS_HOME/samples/petclinic-mvcを参照
applicationContext.xmlにデータソースと、
...
まとめ
Annotationがあるぢゃないか!? (これは言わない!)
BeanBuilderを使うと
Grails → Springビーン利用は簡単ですよ。
そして柔軟(ダイナミックだし)なので、いろいろSpringビーン
の活用幅がひろがり...
将来!?次期バージョンでどうなる?
現在のGrailsでは、Spring 2.5.6なので、3.0に更新したら
どうなっていくのか!?
Grails-1.2から、Spring-3になるそうです。
Graemeさんがtwitterで、いろいろつぶ...
Q&A
お手柔らかに、お願いします。(T.T)
濃い話しはNGで・・・
参考資料
Grails徹底入門
The Definitive Guide to Grails 2nd
Grails-0.1∼1.2のソースコード
Thank You!
合同勉強会、またやりたいですね。
JSUGの勉強会も参加してみたいです!
みなさまの、
  JGGUGへの参加
    お待ちしています。
Upcoming SlideShare
Loading in...5
×

GrailsでSpringをGroovyにしよう!

1,675

Published on

JSUG+JGGUG合同勉強会
2009年6月24日

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,675
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "GrailsでSpringをGroovyにしよう!"

  1. 1. GrailsでSpringを Groovyにしよう! JSUG+JGGUG合同勉強会 2009年6月24日 def speaker = new Cast(name:”T.Yamamoto”,version:”JSG2UG-2009-06-24”)
  2. 2. 自己紹介 名前:山本 剛 (やまもとつよし) 所属:株式会社ニューキャスト 組版屋、印刷系Webアプリ開発など。 案件は90%Grailsを使ってます。 JGGUG(じぇいがぐ) 名古屋支部 担当です。 「Grails徹底入門」9-11章を書きました。 Grails Acegi Plugin作った人。 ブログ http://d.hatena.ne.jp/mottsnite/
  3. 3. おさらい
  4. 4. Grailsとは? よく聞く説明 「Groovyで実装されたRuby on Rails」!?    Java+Groovyで実装された、CoC、DRYの概念を取り 入れた(‘RoR’にインスパイアされた)、Webアプリケーション開発環境。 基礎はSpring,Hibernate等を使用している。 そして、それらをシンプルに活用できる環境。 Grails, the Platform(DGG2引用) 合ってるようで間違い
  5. 5. Grailsの構成図 GrailsGrailsGrails Groovy Spring Hibernate SiteMesh Groovy 基礎部分はJava(+Groovy)基礎部分はJava(+Groovy)基礎部分はJava(+Groovy)基礎部分はJava(+Groovy) JVMJVMJVMJVM Hibernate:ORマッピング Spring: DIコンテナ・多機能なラッパーフレームワーク SiteMesh:レイアウトフレームワーク Jetty: サーブレットコンテナ HSQLDB:ピュアJavaなデータベース 2.5.6 3.3.1 2.4 1.5+ 1.6.3
  6. 6. デモ grails create-app demo cd demo grails create-domain-class Book grails create-controller Book grails run-app 今日はこれやりません
  7. 7. 本日のテーマ! GrailsとSpringの関係 ∼BeanBuilderへたどりつくまで。 BeanBuilder(ビーンビルダ)解説!←本日のメイン GrailsでSpringをGroovyに使う! GrailsにSpringビーンを追加してみる。 SpringでGrailsを使ってGroovyに! applicationContext.groovy !?!? (サンプル解説) GORMをSpringで使う!(サンプル解説) 「GrailsでSpringをGroovyにしよう!」
  8. 8. BeanBuilderって? いろいろ話す前に、まずはザックリこんな感じ。 <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="127.0.0.1"/> </bean> <bean id="mailMessageMe" class="org.springframework.mail.SimpleMailMessage"> <property name="from" value="tyam@xmldo.jp"/> </bean> <bean id="mailMessageYou" class="org.springframework.mail.SimpleMailMessage"> <property name="from" value="you@xmldo.jp"/> </bean> mailSender(org.springframework.mail.javamail.JavaMailSenderImpl) { host = '127.0.0.1' } def map = ["Me":"tyam@xmldo.jp","You":"you@xmldo.jp"] map.each{k,v-> "mailMessage${k}"(org.springframework.mail.SimpleMailMessage) { from = v } } ダイナミックにしてみたり!
  9. 9. 何故, BeanBuilder !?
  10. 10. GrailsとSpringの関係 今さら言うまでもなく、 Grailsの中はSpringがいっぱい! 基礎をSpringフレームワークが支えています。 Grailsには、Springビーンを簡単に追加する仕組みがあり ます。 → 「GrailsでSpringをGroovyに使う!」で話します。 先ずは関係を知るために簡単な所から見てみましょう。 PROJECT_HOME/src/templates/war/web.xml PROJECT_HOME/web-app/WEB-INF/ applicationContext.xml 手 順 grails create-app demo cd demo grails install-template
  11. 11. src/templates/war/web.xml <web-app version="2.4" ... <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> ... <servlet> <servlet-name>grails</servlet-name> <servlet-class> org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> ... applicationContext! DispatcherServlet!
  12. 12. web-app/WEB-INF/applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" ...> <bean id="grailsApplication" class="org.codehaus.groovy.grails.commons.GrailsApplicationFactor yBean"> <description>Grails application factory bean</description> <property name="grailsDescriptor" value="/WEB-INF/grails.xml" /> <property name="grailsResourceLoader" ref="grailsResourceLoader" /> </bean> ... </beans>
  13. 13. applicationContext.xmlの中身 grailsApplication - GrailsApplicationFactoryBean pluginManager - GrailsPluginManagerFactoryBean pluginMetaManager - DefaultPluginMetaManager grailsConfigurator - GrailsRuntimeConfigurator grailsResourceLoader - GrailsResourceLoaderFactoryBean grailsResourceHolder - GrailsResourceHolder characterEncodingFilter - CharacterEncodingFilter
  14. 14. その中で、最も重要なのは、 grailsApplication GrailsApplicationFactoryBean
  15. 15. GrailsApplicationFactoryBean Grailsの最初のバージョンからあります。 GroovyファイルからGrailsアプリケーション用オブジェ クトを生成するファクトリビーン。 リソースが読みこまれ、ここから様々なGrailsオブジェク トが出荷されます。 grailsApplication grails-app以下のgroovyファイル達 grails-app/domin/Book.groovy Author.groovy grails-app/service/SomeService.groovy HogeService.groovy リソースロード ここから様々な情報を読みこんで、 Grailsで使うビーンの生成をしています。
  16. 16. grailsApplicationとビーン生成の関係 この関係を調べることでBeanBuilderって何か解るかも! いろいろソースを探ってたら BeanBuilder誕生の理由?が解った気がしたから・・・ 但し、推測
  17. 17. Grailsの裏側解説(簡易版) groovy groovy groovy groovy groovy groovy groovy groovy grails-appの中 grails起動 リソースロード grailsApplicationに収集 ルールに基づいて情報を読みこむ コンテキスト完成 ビーンが生成される
  18. 18. 歴史をさかのぼると、v0.2時代はGrailsのGroovy(CoC) な部分は複雑だった。 Grailsの裏側解説(簡易版) GrailsPlugin grailsApplication grails-app以下のgroovyファイル達 grails-app/domin/Book.groovy Author.groovy grails-app/service/SomeService.groovy HogeService.groovy リソースロード ・ロードされたリソースをgrailsApplicationから用途別に収集 ・クラス名とかプロパティ内容を元に   ファクトリビーン(RootBeanDefinition)や、他のビーンとの関連等を生成 ・生成されたビーン等をapplicationContextに登録する。 ※"applicationContext.registerBeanDefinition()"する
  19. 19. 少し歴史など。 applicationContext.xmlの内容ヒストリー grailsApplication grailsResourceHolder characterEncodingFilter 0.1 pluginMetaManager 0.6 -> 現在 grailsResourceLoader domainInjector 0.3 injectionOperation pluginManager 0.4 0.4.2-0.5.6 grailsConfigurator BeanBuilder実装 ユーザ拡張可能な、 Plugin実装 内部的な Plugin実装 0.2
  20. 20. Grailsでのビーン生成と、BeanBuilder誕生まで CoCを実現するために。 0.1時代。- SpringConfigクラスで全てを行っていた。 0.2-0.3.1時代。 プラグインの原型が登場。 この時代は、インターフェイスGrailsPluginを実装したクラスの doWithGenericApplicationContext()の中で、 RootBeanDefinitionをGenericApplicationContextに registerBeanDefinition()してた。(大変そう!) 0.4以降。 ユーザ拡張可能なプラグインの実装。 この時に、ビーンの追加も容易になるように BeanBuilderってのが実装された。
  21. 21. 簡単にまとめると Grailsに柔軟な拡張性を実装 0.4からのGrailsプラグイン 深い所:ビーン生成などは、 0.2からの仕組みだと敷居が高くて大変だね! ぢゃあ、ビーンも解りやすく ぐるーびぃーに!DSLに! BeanBuilder誕生!
  22. 22. BeanBuilder 実装クラス:grails.spring.BeanBuilder ApplicationContextを構築するための DSL(Domain Specific Language)です。 直感的でわかりやすくSpringビーンを定義できます。 Groovyプログラムを使用して、動的にビーンを定義で きます。 Grailsアプリケーション以外でも使用できるように設計 されています。
  23. 23. BeanBuiler:単独での使い方 Grailsアプリケーション以外でも 使用できるように設計されているので。 import org.springframework.context.ApplicationContext import grails.spring.BeanBuilder // BeanBuilderの生成 def builder = new BeanBuilder() builder.beans { // ここに定義を書く! } // ApplicationContextの生成 ApplicationContext ctx = builder.createApplicationContext()
  24. 24. BeanBuiler基本書式 基本! someBean(MySomeBean,"引数1",2 ,[3]){bean-> bean.singleton = false bean.factoryMethod = "getInstance" fieldOne = "JGGUG" anotherBean = ref("anotherBean",true) } id クラス名 引数達 ビーン構成用インスタンス AbstractBeanDefinition <bean . . . factoryMethod="getInstance"/> などのアトリビュートが定義 プロパティ定義 ビーン参照
  25. 25. クロージャの最初の引数は AbstractBeanDefinition org.springframework.beans.factory.support. AbstractBeanDefinition   → ビーン構成用インスタンス     <bean>のdestroy-method等のアトリビュート 設定方法 “-”をCamelCaseにする。 Ex. destroy-method → destroyMethod
  26. 26. ■Factoryメソッドの使用例 withFactoryMethod(BeanWithFactoryMethod){bean-> bean.factoryMethod = "getInstance" bean.scope = "prototype" person = "tyama" } ■Bean定義の戻り値はビーン構成用インスタンスなので、 戻り値の変数に指定もできます。 def somebean = withFactoryMethod(BeanWithFactoryMethod){ person = "tyama" } somebean.factoryMethod = "getInstance" somebean.scope = "prototype" ビーン構成用インスタンス AbstractBeanDefinition ビーン構成用インスタンス AbstractBeanDefinition ファクトリビーン
  27. 27. ビーンスコープ ビーンスコープ - 基本は全てシングルトンです。 prototype flash flow conversation session singleton withFactoryMethod(BeanWithFactoryMethod){bean-> bean.factoryMethod = "getInstance" bean.scope = "prototype" person = "tyama" } スコープ
  28. 28. ビーンの参照 ApplicationContextで管理されている他のビーンへの参照 xml定義での <ref bean="anotherBean"/> ref("anotherBean") と書きます。 ref("anotherBean",true) と指定すると 親ApplicationContextのみを参照します。
  29. 29. ■ビーンの参照 beanA(BeanA){ name="bean a" } ■ref("...")で指定する beanB(BeanB){ name="bean b" parent=ref("beanA") } ■ref("...")は、省略可能 beanBB(BeanB){ name="bean b" parent=beanA } ■ref("...",true)第2引数にtrueを指 定して親ApplicationContext内のみ を参照 beanBParent(BeanB){ name="bean b" parent= ref("beanAParent",true) }
  30. 30. Anonymous Inner Beans 匿名インナービーン exampleInner(ExampleBean2){ bean = {ExampleBean b -> name="My First Inner Bean" num=24 } } ■Factory Beanを使った例 exampleInnerBeanFactory(ExapleBeanFactory) exampleInnerUntyped(ExampleBean2){ bean = {bean-> bean.factoryBean = "exampleInnerBeanFactory" bean.factoryMethod = "newInstance" name="example BeanFactory" num=24 } }
  31. 31. Beanの継承、抽象ビーン <bean id="exampleAbstractBeanNoClass" abstract="true"> <property name="name" value="abstract bean"/> <property name="num" value="20"/> </bean> <bean id="exampleNoCls" parent="exampleAbstractBeanNoClass" class="ExampleBean"> <property name="name" value="My First Bean"/> </bean> <bean id="exampleAbstractBeanWiCn" abstract="true" class="ExampleBean"> <property name="name" value="abstract bean"/> <property name="num" value="23"/> </bean> <bean id="exampleWiCn" parent="exampleAbstractBeanWiCn"> <property name="name" value="My First Bean"/> </bean>
  32. 32. Beanの継承、抽象ビーン exampleAbstractBeanNoClass { name="abstract bean" num = 20 } (SomeClass)クラスの指定を無くす exampleNoCls(ExampleBean){ bean -> bean.parent = exampleAbstractBeanNoClass name = "My First Bean" } bean.parentに指定する。 exampleAbstractBeanWiCn(ExampleBean){ bean -> bean.'abstract' = true name="abstract bean" num = 23 } bean.‘abstract’=trueを指定
  33. 33. 動かしてみる Grails徹底入門10章を参考に! Gantは1.6.1 Binary, standalone installationを使用 執筆時と一部仕様が変わっているので修正。 build.gantの中の Ant → ant に変更。 libの中身を変更 commons-logging-1.1.jar grails-bootstrap-1.1.1.jar grails-spring-1.1.1.jar groovy-all-1.6.3.jar spring-2.5.6.jar デモ
  34. 34. BeanBuilderの 利用方法はおさえたので
  35. 35. Grailsで Springビーンを Groovyに使う!
  36. 36. GrailsでSpringビーンをGroovyに使う! GrailsアプリケーションにSpringビーンを追加。 正しい方法は3つ resources.xmlに記述。 resources.groovyにBeanBuilderで記述。 Grailsプラグインにしてしまう。 Grailsのプロジェクト内で定義されたビーンを使うには def someBean と宣言するだけでOK.
  37. 37. resources.xml grails-app/conf/spring/resources.xmlに xmlでのビーン定義をそのまま書く。 デモ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="exampleBean" class="bean.ExampleBean"> <constructor-arg value="hello exampleBean"/> <property name="name" value="My First Bean" /> <property name="num" value="19" /> </bean> </beans> package bean class ExampleBean { def name def num ExampleBean(){} ExampleBean(String arg){println arg} String toString(){ "ExamplBean: $name $num" } }
  38. 38. resources.groovy grails-app/conf/spring/resources.groovyに BeanBuilderで記述。 デモ package bean class ExampleBean { def name def num ExampleBean(){} ExampleBean(String arg){println arg} String toString(){ "ExamplBean: $name $num" } } beans = { exampleBean(ExampleBean,"hello exampleBean"){ name = "My First Bean" num = 19 } }
  39. 39. 実装変更に使える grails-app/conf/spring/resources.groovy( or xml)で 同名称(id)のビーンが追加された場合は、 内容が上書きされます。 例えば、既に定義されている “dataSource”ビーンの 実装クラスを変えて定義し直したい場合。 dataSource(com.mchange.v2.c3p0.ComboPooledDataSource) { bean -> bean.destroyMethod = "close" driverClass = "org.hsqldb.jdbcDriver" jdbcUrl="jdbc:hsqldb:hsql://localhost:9001" user="sa" password="" } 定義したIDが同名のビーン内容が上書きされる ここを変えてみた
  40. 40. GrailsプラグインでdoWithSpring 再利用しちゃいましょう! class JggugBeanGrailsPlugin { // the plugin version def version = "0.1" .... def doWithSpring = { // TODO Implement runtime spring config (optional) exampleBean3(bean.ExamplePluginBean,"hello plugin exampleBean3"){ name = "My 3rd Bean" num = 100 } } .... } プラグインの細かい話はJGGUGの勉強会「G*」で!
  41. 41. SpringでGrailsを 使ってGroovyに!
  42. 42. applicationContext.groovy!? Grailsのソースリポジトリにコッソリ!?置いてある。 grails-sample/standalone-beanbuilder 若干古いです。 内容 <context-param>のcontextConfigLocationに /WEB-INF/applicationContext.groovyを指定 <context-param>のcontextClassに GrailsWebApplicationContextを指定 あとはビーンビルダで定義するだけ。 ソースの中を見てみましょう
  43. 43. GrailsのGORMを使う! スタンドアロンでGORMが使用可能! Spring MVCでのサンプル、 GRAILS_HOME/samples/petclinic-mvcを参照 applicationContext.xmlにデータソースと、 <gorm:sessionFactory/>の定義。 <gorm:sessionFactory base-package="org.grails.samples" data-source-ref="dataSource" message-source-ref="messageSource"> <property name="hibernateProperties"> <util:map> <entry key="hibernate.hbm2ddl.auto" value="update"/> </util:map> </property> </gorm:sessionFactory> import grails.persistence.Entity @Entity class Person { String name ... } Person.groovy
  44. 44. まとめ Annotationがあるぢゃないか!? (これは言わない!) BeanBuilderを使うと Grails → Springビーン利用は簡単ですよ。 そして柔軟(ダイナミックだし)なので、いろいろSpringビーン の活用幅がひろがりそう。 単独で動作するので、単純なビーンのテストとかに使える? Grailsから派生したGORM Spring → Grailsのコンポーネント利用 Springの内部もぐるーびぃーになる。 みなさんの実運用でどうなのか解りませんが・・ Grailsでドメイン設計して、 ほぼ,そのままSpringで利用可能?
  45. 45. 将来!?次期バージョンでどうなる? 現在のGrailsでは、Spring 2.5.6なので、3.0に更新したら どうなっていくのか!? Grails-1.2から、Spring-3になるそうです。 Graemeさんがtwitterで、いろいろつぶやいてました。
  46. 46. Q&A お手柔らかに、お願いします。(T.T) 濃い話しはNGで・・・ 参考資料 Grails徹底入門 The Definitive Guide to Grails 2nd Grails-0.1∼1.2のソースコード
  47. 47. Thank You! 合同勉強会、またやりたいですね。 JSUGの勉強会も参加してみたいです! みなさまの、   JGGUGへの参加     お待ちしています。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×