所以我有几个.drlt文件(普通的txt文件,作为规则引擎的模板)和 我需要读取它们并在应用程序的bootstrap中输入一些静态字符串变量。
我无法弄清楚哪里将它放在grails应用程序中,如何来阅读它们。
我已经尝试将它们放到src / java并从src / grails,域,服务等读取它们。这些都没有用。唯一有效的方法是将它放入grails-app / conf并按如下方式阅读:
def classLoader = Thread.currentThread().contextClassLoader
def fileReader = classLoader.getResourceAsStream('my-file.drlt').newReader()
但我不想将我的模板文件放在config目录中。 我已经阅读了很多帖子和解决方案'对于这个问题,但没有它们是很好的解决方案。是否真的有可能在Grails这样一个稳定的框架中做得不好?
感谢您的帮助, 伊万
答案 0 :(得分:7)
由于Grails是一个结构良好的Spring应用程序,因此您可以利用Resource
和ResourceLoader
加载文本文件。 grailsResourceLocator
使用这些非常简单(确保将它注入到bean中)。使用这些类,您可以在src/java
或src/groovy
目录中找到您的文件,并将其视为任何其他类资源。
例如,如果您的文件位于src/java/com/example/textfile.txt
,那么您可以使用File
grailsResourceLocator.findResourceForURI('classpath:/com/example/textfile.txt').getFile()
的身份访问该文件
可在此blog post中找到详细示例,Resource的API文档也可能有所帮助。
这是处理Grails应用程序中资源的正确方式。