2
如何從Grails Filter訪問應用程序上下文。我可以通過以下方式從控制器執行此操作:從Grails Filter構造器訪問應用程序上下文
def ctx = ApplicationHolder.application.mainContext
但是,在過濾器中,ctx爲空。
在這種情況下,我特別試圖訪問過濾器的構造函數中的應用程序上下文。
如何從Grails Filter訪問應用程序上下文。我可以通過以下方式從控制器執行此操作:從Grails Filter構造器訪問應用程序上下文
def ctx = ApplicationHolder.application.mainContext
但是,在過濾器中,ctx爲空。
在這種情況下,我特別試圖訪問過濾器的構造函數中的應用程序上下文。
您不應該使用持有者類 - 它們在2.0中被棄用,並且將在未來的版本中被刪除。
從控制器,過濾器,服務等訪問應用程序上下文的最佳方法是通過
添加依賴注入的GrailsApplication,即def grailsApplication
然後你就可以獲取上下文
def ctx = grailsApplication.mainContext
在與Spring bean相關的構造函數中工作是不尋常的,所以如果可能的話,你應該重構。 Grails工件是Spring bean,因此在構建應用程序上下文時實例化它們。
控制器有點不同,因爲它們不是像大多數bean那樣的單例,所以當它們被構造(每個請求一個)時,持有者就會被填充。但是一般情況下,你應該避免在構造函數中執行GORM工作,訪問應用程序上下文等,因爲事情不太可能連線。