我是时髦的新手。 并寻找一种将常见配置存储在一个地方的方法,以便我的应用程序可以访问它。
我正在WEB-INF
中保留我的时髦应用程序的配置,如何从我的主应用程序访问该文件?
我尝试了这个ConfigSlurper().parse(new File("config.groovy").toURL())
,但无法让它工作,因为雄猫期待config.groovy
的路径是雄猫安装的地方。我已将我的应用程序库配置为其他位置。
如何为new File('')
提供相对路径,以便它可以读取配置文件?
ClassLoader 而不是直接使用文件系统来执行此操作。基本上,不要使用File
。我不确定如何在 Groovy 中执行此操作,但在普通的旧 Java 中,它看起来像这样:
URL config = request.getServletContext().getResource("/WEB-INF/config.groovy");
。然后对 URL 执行任何您想要的操作。(仅供参考,getResource
方法使用Web应用程序的ClassLoader)。所以,也许在Groovy中可能是:
ConfigSlurper().parse(request.ServletContext.getResource("/WEB-INF/config.groovy"))
对不起,我不能给你确切的 Groovy 语法......不是我的世界。:)
如果必须在部署时设置配置,则可以将文件放入 war 中并使用类加载器访问它们。
例如,在一个标准的 maven 项目中,将你的配置文件放在 src/main/resources/config/目录(file1.config、file2.config. 等)中。然后在您的 java 代码中输入以下内容
public class MyConfigLoader {
void loadConfigFile(String configFileName) {
InputStream is = MyConfigLoader.class.getClassLoader().getResourceAsStream("config/"+configFileName);
...
}
}
这每次都有效
在你的BoosStrap,Controllers,TagLibs和中注入"grailsApplication" 服务业:
def grailsApplication
将文件放在/web-app/WEB-INF/resources 中,并使用这一行 用于检索资源目录的代码:
def resources = grailsApplication.mainContext.getResource('/WEB-INF/resources').file
适用于开发和生产
我建议将配置文件从WEB-INF
移动到grails-app/conf
文件夹。此文件夹用于配置文件...
Grails允许您通过在Config.groovy
中编辑grails.config.locations
变量来轻松导入自定义配置文件。见 http://grails.org/doc/latest/guide/conf.html#configExternalized
如果配置文件的名称是customConfig.groovy
,并且您将其移动到grails-app/conf
则可以使用:
grails.config.locations = [ customConfig]
def config = new ConfigSlurper().parse(servletContext.getResource("/WEB-INF/config.groovy"))
这适用于所有环境。