从src / groovy访问配置/属性文件

时间:2014-09-04 07:53:03

标签: grails grails-2.0 grails-plugin

我在src / groovy下有一个文件,我有一些属性在我的Config.groovy和外部属性文件中。通常,如果需要访问属性,则可以使用grailsApplication .configuration.property.name表达式。我希望能够从src / groovy目录下的此文件访问所有这些属性。到目前为止我尝试了什么

import grails.util.Holders

class ForkedTomcatCustomizer {

    def application

    void customize(Tomcat tomcat) {

        println Holders.grailsApplication.config.property.name
    }
}

给了我NPE说grailsAppliction为null

import org.codehaus.groovy.grails.web.context.ServletContextHolder as SCH
import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes as GA



class ForkedTomcatCustomizer {

    def application

    void customize(Tomcat tomcat) {

        def ctx = SCH.servletContext.getAttribute(GA.APPLICATION_CONTEXT)
        def grailsAppliction = ctx.grailsApplication.getObject()
        println grailsAppliction.config.property.name
    }
}

相同 - NPE因为grailsAppliction为null

有可能以某种方式处理这种情况吗?谢谢!

3 个答案:

答案 0 :(得分:0)

使用以下内容查看是否有效

println Holders.config.property.name

使用Holders时不需要grailsApplication。

答案 1 :(得分:0)

以下示例可能比您需要的更复杂,但它们展示了如何在构建时获取配置属性。我使用它们来合并两个配置文件,但您可能不需要这样做。

method在CompileEnd事件中调用here时返回config属性。

您可以在app的_Events.groovy文件中定义一个类似的方法,该文件调用您自己的配置持有者类。

答案 2 :(得分:0)

import org.codehaus.groovy.grails.commons.ConfigurationHolder;

class KeyAndSecret{
     public static String consumerKey = ConfigurationHolder.config.consumerKey;
     public static String consumerSecret = ConfigurationHolder.config.consumerSecret;
}

试试这个