gpt4 book ai didi

Grails 2.0 在 POGO 中使用来自外部文件的配置值

转载 作者:行者123 更新时间:2023-12-02 14:17:46 26 4
gpt4 key购买 nike

这是场景。我在 Grails 应用程序之外有一个文件,其中包含 url/用户名/密码/等。信息使开发人员无法看到生产的连接信息。我通过执行以下操作将这些信息包含在 Config.groovy 中:

grails.config.locations << "file:" + "C:/directory/from/env/variable/data.properties"

然后我通过以下方式在 POGO 中访问这些信息:
import org.codehaus.groovy.grails.commons.ConfigurationHolder
...
ConfigurationHolder.config.url
ConfigurationHolder.config.userName
ConfigurationHolder.config.password

升级到 Grails 2.0 后,我注意到 ConfigurationHolder 已被弃用。所以我去了文档:( http://grails.org/doc/latest/guide/conf.html )试图弄清楚如何修复它。文档说使用 grailsApplication 来获取配置值。我的问题是我在 POGO 中,并且 grailsApplication 的 Grails Autowiring 没有被调用。我的问题有两部分:

1) 在 POGO 中是否有更好的方法从文件中获取配置信息?

2)如果没有更好的方法,我如何将 grailsApplication 注入(inject) POGO?

附加信息:
我正在使用 Grails GLDAPO 插件 ( http://gldapo.codehaus.org/ ) 与 LDAP 目录交互。我试图让这些对象(我放在/src/groovy 下)的行为方式与域对象相同,因为我可以在它们上使用静态方法来执行 findBy...(..) .使用您建议的模式,我必须通过服务来获取数据。这还不错,只是不像 Groovy :)

最佳答案

基于更新问题的新答案。

你有几个选择。一种是在 grailsApplication 中接线到这些类的元类,即在 BootStrap.groovy 中:

class BootStrap {

def grailsApplication

def init = { servletContext ->
YourClass.metaClass.getGrailsApplication = { -> grailsApplication }
}
}

这将添加一个 getGrailsApplication可以作为 grailsApplication 访问的方法属性(property)。

另一种选择是添加静态 grailsApplication这些类的字段并将其设置在 BootStrap :
class BootStrap {

def grailsApplication

def init = { servletContext ->
YourClass.grailsApplication = grailsApplication
}
}

另见 this blog post讨论创建持有者类和 this one讨论重写构造函数。

关于Grails 2.0 在 POGO 中使用来自外部文件的配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8934294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com