groovy-seasarはGroovyにそなわったスクリプト言語の機能を利用して、 XMLとSelだけでは自然に表現できない設定を簡単に実現できます。
例えば、インスタンスを直接作成しargへと渡すことができます。
component(TargetClass) {
arg(new BigDecimal('123.5'))
}
もちろん、変数の利用や、オブジェクトに対してメッセージを送ることもできます。
component(TargetClass) {
// java.util.Calendarオブジェクトの生成と設定
cal = Calendar.getInstance()
cal.clear()
cal.set(Calendar.YEAR, 2004)
cal.set(Calendar.MONTH, 4)
cal.set(Calendar.DATE, 31)
// argとして登録
arg(cal)
}
条件分岐を利用して、デバッグ時にフラグを立てることでアドバイスを有効にすることができます。
builder.components(){
DEBUG = true // デバッグ用フラグ
if(DEBUG){
component(class:TraceAdvice, name:"traceAdvice")
}
component(TargetClass){
if(DEBUG){ aspect(advice:"traceAdvice") }
}
}
登録するコンポーネントを決定するために、 外部ファイルを読み込む必要があるときやデータベースを参照する必要があるとき、 groovy-seasarはそのための柔軟な手段を提供します。
component(TargetClass){
res = ResourceBundle.getBundle("resource")
plugin = Class.forName(res.String("plugin.class"))
prop(name:"pluginClass", value:plugin)
}