10

grailsApplicationgroovy クラスでアクセスしようとしていますsrc/groovyが、null ポインター例外が発生します。また、同じクラスと同じ結果にサービスを注入しようとしました。grailsApplicationgroovy クラスからサービスにアクセスするにはどうすればよいですか? (Grails 1.3.7 を使用しています)

4

4 に答える 4

8

ApplicationHolder クラスは、新しい Grails バージョン (2.0 以降) では非推奨です。

Burt のブログ投稿の 1 つで説明されている別の方法があります: http://burtbeckwith.com/blog/?p=1017

于 2013-01-17T09:00:11.967 に答える
5

依存性注入は、の下のGroovyクラスでは機能しませんsrc/groovy。次のようにgrailsApplication使用してアクセスできます。ApplicationHolder

import org.codehaus.groovy.grails.commons.ApplicationHolder

def grailsApplication = ApplicationHolder.application

次のようなすべてのサービスにアクセスできます。

def allServicesArtefacts = grailsApplication.services
于 2013-01-17T08:42:39.443 に答える
2

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 ドキュメントについては、以下を参照してください。

http://grails.github.io/grails-doc/latest/guide/spring.html

于 2015-03-13T13:09:04.933 に答える