在域对象和静态范围中获取grails 2.0.0M1配置信息?

Way*_*yne 6 grails grails-domain-class

如何从域对象或静态范围获取Config.groovy信息?我现在正在使用ConfigurationHolder.config.*,但是这个和ApplicationHolder已被弃用,所以我想'做对'...但是grailsApplication对象在DO /静态范围内不可用.

Ian*_*rts 19

Grails的2更换为弃用ApplicationHolder,ConfigurationHolder等等是grails.util.Holders,它提供了相同的功能,但在某种程度上是安全的,当在相同的容器几个不同的web应用在父类加载器正在共享的Grails JAR文件的单个副本(这是老持有人破产的情况).

import grails.util.Holders

// ...

static void foo() {
  def configOption = Holders.config.myapp.option
}
Run Code Online (Sandbox Code Playgroud)


Bur*_*ith 8

我将添加grailsApplication到域类的元类 - 这是我正在考虑为2.0决赛做的事情.现在,把它放进去BootStrap.groovy,例如

class BootStrap {

   def grailsApplication

   def init = { servletContext ->
      for (dc in grailsApplication.domainClasses) {
         dc.clazz.metaClass.getGrailsApplication = { -> grailsApplication }
         dc.clazz.metaClass.static.getGrailsApplication = { -> grailsApplication }
      }      
   }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以grailsApplication.config通过grailsApplication.mainContext.getBean('foo')或只是访问配置,和Spring bean grailsApplication.mainContext.foo.