2016-10-18 47 views
0

我不敢相信這很難弄清楚。儘管我是Grails/Groovy newb,但我期望的是,這應該在Groovy中以某種方式完成。我正在復活一箇舊項目並更新它的Java 8.到目前爲止,我已經修復了庫和依賴關係,但我必須更改的其中一件事是在Java類中獲取org.springframework.core.env.Environment的引用。我認爲從應用程序上下文中獲取它很容易,但是它以某種我不瞭解的方式完成。Grails 2.4.5如何連接對應用程序上下文的引用?

我已經澆過這個http://docs.grails.org/2.4.5/guide/spring.html但它仍然是不明確的。請注意,我必須將它連接到一個Java類。

回答

0

如果這個類是不會成爲一個Spring bean或以其他方式候選人依賴注入,那麼它極有可能直接或間接地從一個Spring bean調用,例如作爲控制器,服務或Quartz作業等的幫助。調用者在構造函數或方法參數中傳遞依賴項(其他bean,ApplicationContext等),這取決於更方便的方法。

如果使用依賴注入和/或傳遞注入的依賴關係無法獲得合理的工作,則可以始終違反DI和IoC並使用反模式類並提取上下文或Spring bean,但這應該只有在沒有適當的解決方案時才能完成。

+0

請注意,你可以有'ApplicationContext'注入Grails的神器或其他的Spring bean通過實施'ApplicationContextAware'。另一種方便的方法,特別是如果你已經有了對'GrailsApplication'的需求,那麼就是調用它的'getMainContext()'方法。控制器和過濾器的作用域總是有一個'grailsApplication'變量,所以不要在第二個依賴注入或者ApplicationContextAware中存在,因爲它是多餘的。 –

相關問題