Grails的FAQ這樣說:Grails:從src/groovy類訪問域類的最佳方式是什麼?
問:我怎樣才能訪問的src來源域類/ Groovy的?
有時,您正在開發一些實用程序類,它們生活在src/groovy中,並且您打算從服務和其他工件中使用它們。但是,由於這些類是由Grails預編譯的,因此不可能將它們實例化並編寫諸如Book.findByTitle(「Groovy in> Action」)。不過幸運的是,有一個解決辦法,因爲這是可能做到這一點:
進口org.codehaus.groovy.grails.commons.ApplicationHolder
// ...
高清書= ApplicationHolder.application.getClassForName( 「library.Book」)。findByTitle(「Groovy in Action」)
應用程序必須在動態Gorm方法正常工作之前完成自引導。
然而,看來我可以直接導入域對象,並使用GORM方法在我的src/Groovy類沒有任何問題,如:
Book.findByTitle("Groovy in Action")
由於ApplicationHolder已過時,這個建議一定要出的日期,但是是否還有任何理由避免直接從src/groovy使用域類?
老版本的grails通過對artefact(grails-app)和non-artefact(src/groovy)類使用不同的類加載器,以dev模式實現自動重新加載修改後的artefact。更新的grails版本使用基於代理的重新加載方法,而且全部都在一個類加載器中。 –