如何访问保存在 WEB-INF 文件夹中的配置文件



我是时髦的新手。 并寻找一种将常见配置存储在一个地方的方法,以便我的应用程序可以访问它。

我正在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"))

这适用于所有环境。

最新更新