使用 spring 加载文本文件,其中其位置定义为 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,然后从资源加载器获取文件,但我们想知道它是否可以更容易地完成,可能带有一些内置函数。

似乎 resourceLoader.getResource 不会解析 Spring EL。

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

时解析。将值注入到字符串字段中...

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

resourceLoader.getResource(this.location);

最新更新