2010-06-26 33 views
1

我在我的Grails項目中有一些自定義groovy類,我想注入一個記錄器和一些其他的東西到類中,就像它在服務類或控制器類。 「目標」類中的代碼將以這種方式直接訪問日誌記錄,而不用花太多時間。掛鉤到Grails事件爲了注入屬性和方法沒有beffing插件

如何在Grails項目(而不是Grails插件)中編寫腳本以鉤住「doWithDynamicMethods」風格的事件並以這種方式增強您自己的類?

感謝,

克里斯蒂安·索內詹森

回答

0

在應用程序中,通常你會做這在grails-app/conf目錄/ BootStrap.groovy中,例如

class BootStrap { 

    def init = { servletContext -> 
     Foo.metaClass.getLog = { -> ... } 
    } 
} 
+0

嗨, 這是事實,你可以做到這一點,但我知道它可以通過腳本來完成。不知何故,當增強功能放在腳本中時,我更喜歡這個想法。我曾經看到它與Tomcat插件相關的如何將內容添加到web.xml中。不幸的是,我現在無法仿效這個例子。 – 2010-06-27 04:26:47

+0

向web.xml添加元素與向類中添加元類方法完全不同。在常規的Grails應用程序中不支持像doWithDynamicMethods這樣的階段,就像在插件中一樣,但是並不需要一個。一個插件需要一個鉤子來註冊Spring bean並修改web.xml,因爲它必須在啓動過程的早期發生,但是您可以隨時添加元類方法。所以BootStrap和其他地方一樣好。 – 2010-06-27 17:08:19