grailsApplication
groovy クラスでアクセスしようとしていますsrc/groovy
が、null ポインター例外が発生します。また、同じクラスと同じ結果にサービスを注入しようとしました。grailsApplication
groovy クラスからサービスにアクセスするにはどうすればよいですか? (Grails 1.3.7 を使用しています)
4 に答える
ApplicationHolder クラスは、新しい Grails バージョン (2.0 以降) では非推奨です。
Burt のブログ投稿の 1 つで説明されている別の方法があります: http://burtbeckwith.com/blog/?p=1017
依存性注入は、の下のGroovyクラスでは機能しませんsrc/groovy
。次のようにgrailsApplication
使用してアクセスできます。ApplicationHolder
import org.codehaus.groovy.grails.commons.ApplicationHolder
def grailsApplication = ApplicationHolder.application
次のようなすべてのサービスにアクセスできます。
def allServicesArtefacts = grailsApplication.services
src/groovy または src/java またはサードパーティの jar からの依存性注入に参加したいクラスがある場合、それらを grails-app/conf/spring/resources.groovy で構成するだけです。
次のようなクラス mypackage.MyClass が src/groovy ディレクトリにあるとします。
package mypackage
class MyClass{
def grailsApplication
def myMethod(){
//uses grailsApplication
}
}
次に、以下を grails-app/conf/spring/resouces.groovy に追加すると、自動注入されます。
myClass(mypackage.MyClass){bean->
bean.autowire = "byName"
}
これは、これまでの grails のどのバージョンでも機能します。また、前述したように、サードパーティの jar を使用することもできます。たとえば、resources.groovy には常に次のものがあります。
jdbcTemplate(org.springframework.jdbc.core.JdbcTemplate){
dataSource = ref('dataSource')
}
より包括的な Spring/Grails ドキュメントについては、以下を参照してください。