簡體   English   中英

在groovy類中訪問grailsApplication或Service

[英]Access grailsApplication or Service in groovy class

我試圖在src/groovy下的groovy類中訪問grailsApplication ,但是我得到一個空指針異常。 我還嘗試將服務注入到同一個類和相同的結果中。 如何從groovy類訪問grailsApplication或服務? (我使用的是Grails 1.3.7)

ApplicationHolder類在較新的Grails版本(2.0及更高版本)中已棄用。

還有另一種方式,在Burt的一篇博文中有描述: http ://burtbeckwith.com/blog/?p = 1017

在Grails 2.0之后,你應該使用:

 def grailsApplication = Holders.grailsApplication

依賴注入對src/groovy下的groovy類不起作用。 您可以使用ApplicationHolder訪問grailsApplication如下所示:

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中配置它們。

如果你的src / groovy目錄中的類mypackage.MyClass看起來像這樣:

package mypackage
class MyClass{
    def grailsApplication
    def myMethod(){
        //uses grailsApplication
    }
}

然后通過將以下內容添加到grails-app / conf / spring / resoruces.groovy中,它將自動注入:

myClass(mypackage.MyClass){bean->
    bean.autowire = "byName"    
}

這將適用於任何版本的grails,就像我說你甚至可以使用第三方罐子 - 例如我總是在我的resources.groovy中有以下內容:

jdbcTemplate(org.springframework.jdbc.core.JdbcTemplate){
    dataSource = ref('dataSource')
}

有關更全面的Spring / Grails文檔,請參閱:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM