当我的Grails应用程序启动时,我会从远程URL下载的CSV文件中构建数据结构。如果文件无法访问,我想回到本地副本。当前正在使用Quartz作业启动服务层中的文件。
使用Groovy阅读Grails中的本地资源的最佳做法是什么?
一般情况下的答案是非常可以接受的。
答案 0 :(得分:2)
我认为处理此问题的最佳方法是将文件的位置存储在externalized configuration file中。
因此,您将确定标准化位置(例如/etc/myappname/CSVFileConfig.groovy
),或者使用环境变量或类似内容传递配置文件路径。有关示例,请参阅Externalized Configuration。
然后你可以简单地将本地文件的实际路径添加到该extenal配置中,如下所示:
// CSVFileConfig.groovy
my.custom.csv.path = ...
最后,使用常规配置操作访问它:
// in your Quartz job
def path = grailsApplication.config.my?.custom?.csv?.path
if(!path) {
// no file to load
} else {
// load file
}
就阅读文件而言,您主要关注的是什么?如果您使用的是CSV库,例如OpenCSV(在most of the Grails libraries for CSV parsing中使用),它将处理文件的打开和解析。
对于除此之外的安全问题,我不确定如何以通用方式处理它们。这取决于您的具体情况。我认为来自URL的那个具有更高的风险因素。