0

在 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,然后从资源加载器中获取文件,但我们想知道是否可以更轻松地完成,可能使用一些内置函数。

4

1 回答 1

2

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

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

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

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

resourceLoader.getResource(this.location);
于 2017-05-27T12:45:56.233 回答