gpt4 book ai didi

grails - Grails配置文件返回空对象而不是字符串

转载 作者:行者123 更新时间:2023-12-02 14:23:33 24 4
gpt4 key购买 nike

我正在尝试从外部配置文件中读取字符串,但是由于某种原因,我只能得到一个空对象。这是配置文件(DirectoryConfig.groovy)

directory {
logDirectory = "c:\\opt\\tomcat\\logs\\"
}

以及从目录中检索目录的代码:
String dirName = grailsApplication.config.directory.logDirectory
File directory = new File(dirName)

由于某种原因, dirName总是最终成为 "{}",因此无法读取文件。我在这里做错了什么?

最佳答案

按照惯例,无法在DirectoryConfig.groovy目录中创建grails-app/conf/

您应该考虑实施推荐用于外部化Grails配置的解决方案-从类路径或文件系统传递.groovy.properties文件。看看Config.groovy中的注释代码:

// grails.config.locations = [ "classpath:${appName}-config.properties",
// "classpath:${appName}-config.groovy",
// "file:${userHome}/.grails/${appName}-config.properties",
// "file:${userHome}/.grails/${appName}-config.groovy"]

提供依赖于运行时属性的配置文件是一种非常常见的方法:
// if (System.properties["${appName}.config.location"]) {
// grails.config.locations << "file:" + System.properties["${appName}.config.location"]
// }

我经常使用这样的东西(它是 Config.groovy文件的一部分):
grails.config.locations = []
grails.project.config.type = "classpath"
grails.project.config.extension = "groovy"

environments {
development {
grails.project.config.file = "development-config.${grails.project.config.extension}"
}
test {
grails.project.config.file = "test-config.${grails.project.config.extension}"
}
}

if (System.properties["grails.config.type"]) {
grails.project.config.type = System.properties["grails.config.type"]
}
if (System.properties["grails.config.file"]) {
grails.project.config.file = System.properties["grails.config.file"]
}

grails.config.locations << "${grails.project.config.type}:${grails.project.config.file}"

默认情况下,假设存在类路径中的development-config.groovy文件,但是我可以通过在Java运行时中设置 -Dgrails.config.file=/etc/development.properties -Dgrails.config.type=file来简单地对其进行更改,以便它使用 /etc/development.properties文件而不是默认文件。

如果您想以最简单的方式运行示例,则必须执行以下操作:

1)将您的 DirectoryConfig.groovy放在类路径源中,例如 src/java(注意:如果将文件放在 src/groovy中,它将不起作用)

2)在您的 Config.groovy中定义:
grails.config.locations = [
"classpath:DirectoryConfig.groovy"
]

3)重新运行您的应用程序。 grailsApplication.config.directory.logDirectory现在应该返回您期望的值。

有关外部化配置的更多信息,请访问 http://grails.org/doc/latest/guide/conf.html#configExternalized

关于grails - Grails配置文件返回空对象而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26692034/

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