Jar*_*son 1 grails grails-config
这是场景.我的Grails应用程序之外的文件包含url/username/password/etc. 信息使开发人员无法查看生产的连接信息.我通过以下方式将此信息包含在Config.groovy中:
grails.config.locations << "file:" + "C:/directory/from/env/variable/data.properties"
Run Code Online (Sandbox Code Playgroud)
然后我通过以下方式在POGO中访问此信息:
import org.codehaus.groovy.grails.commons.ConfigurationHolder
...
ConfigurationHolder.config.url
ConfigurationHolder.config.userName
ConfigurationHolder.config.password
Run Code Online (Sandbox Code Playgroud)
升级到Grails 2.0后,我注意到不推荐使用ConfigurationHolder.所以我去了文档:(http://grails.org/doc/latest/guide/conf.html)试图弄清楚如何解决它.文档说使用grailsApplication来获取配置值.我的问题是我在POGO中并且GrailsApplication的Grails自动装配不会被调用.我的问题有两个部分:
1)在POGO内部有更好的方法从文件中获取配置信息吗?
2)如果没有更好的方法,我如何将grailsApplication注入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 }
}
}
Run Code Online (Sandbox Code Playgroud)
这将添加一个getGrailsApplication可以作为grailsApplication属性访问的方法.
另一种选择是为grailsApplication这些类添加一个静态字段并将其设置为BootStrap:
class BootStrap {
def grailsApplication
def init = { servletContext ->
YourClass.grailsApplication = grailsApplication
}
}
Run Code Online (Sandbox Code Playgroud)
也看到这个博客帖子是讨论创建持有者类和这一个,讨论重载构造函数.
| 归档时间: |
|
| 查看次数: |
1323 次 |
| 最近记录: |