使用 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);
在 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);