使用 spring 加载一个文本文件,其位置定义为 spring el

Use spring to load a text file where its location is defined as spring el

在 spring 基础项目中,我们要从 classpath 加载文件,文件位置必须从 spring el 表达式求值。

此功能当前在 spring 中,它加载 属性 个文件,位置可以是任何 Spring EL

<util:properties id="samplePolicy"
    location="classpath:/conf/#{environment.getActiveProfiles()[1]}
              /sample.properties" />

这正是我们想要的,但不是加载 属性 文件,只是一个文本文件。

所以我们尝试以下:

我们用ResourceLoader

@Autowired
private ResourceLoader resourceLoader;
//And then ....
resourceLoader.getResource("classpath:myfile.txt");

怎么过 resourceLoader.getResource("classpath:/conf/#{environment.getActiveProfiles()[1]}}/sample.txt") 都不行。

似乎resourceLoader.getResource没有解析Spring EL。

虽然我们可以解析 EL 然后从资源加载器获取文件,但我们想知道是否可以更简单地完成它,可能使用一些内置函数。

It seems that the resourceLoader.getResource does not parse the Spring EL.

资源加载器不解析 SpEL,应用程序上下文在加载时解析。

将值注入字符串字段...

@Value("classpath:/conf/#{environment.getActiveProfiles()[1]}/sample.txt")
private String location;

resourceLoader.getResource(this.location);