How to access Grails configuration in Grails 2.0?

后端 未结 6 2047
青春惊慌失措
青春惊慌失措 2020-11-30 18:35

I have obtained the latest Grails 2.0 milestone, and I am seeing a deprecation warning for the ConfigurationHolder class:

org.codehaus.groovy.gr         


        
6条回答
  •  一生所求
    2020-11-30 19:22

    • If you need it in an artifact that supports dependency injection, simply inject grailsApplication

      class MyController {
          def grailsApplication
      
          def myAction = {
              def bar = grailsApplication.config.my.property
          }
      }
      
    • If you need it in a bean in, say, src/groovy or src/java, wire it up using conf/spring/resources.groovy

      // src/groovy/com/example/MyBean.groovy
      class MyBean {
          def grailsApplication
      
          def foo() {
              def bar = grailsApplication.config.my.property
          }
      }
      
      // resources.groovy
      beans = {
          myBean(com.example.MyBean) {
              grailsApplication = ref('grailsApplication')
              // or use 'autowire'
          }
      }
      
    • Anywhere else, it's probably easiest to either pass the configuration object to the class that needs it, or pass the specific properties that are needed.

      // src/groovy/com/example/NotABean.groovy
      class NotABean {
          def foo(def bar) {
             ...
          }
      }
      
      // called from a DI-supporting artifact
      class MyController {
          def grailsApplication
          def myAction = {
              def f = new NotABean()
              f.foo(grailsApplication.config.my.property)
          }
      }
      

    Update:

    Burt Beckwith recently wrote a couple of blog posts on this. One discusses using getDomainClass() from within domain classes, while the other offers the option of creating your own holder class (if none of the solutions above are appropriate).

提交回复
热议问题