所以这必须是一些愚蠢的错误,我无法通过。我正在尝试外部化我的属性文件,该文件目前放在我的用户主目录中。我正在使用@PropertySource
加载属性文件,如下所示:
@Configuration
@PropertySources(value = { @PropertySource("file:#{systemProperties['user.home']}/.invoice/config.properties") })
public class PropertiesConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertiesPlaceHolderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
但不幸的是,这不是加载属性文件。抛出FileNotFoundException
。但是,如果我改变路径:
@PropertySources(value = { @PropertySource("file:/home/rohit/.invoice/config.properties") })
它运作正常。这就是早期路径解决的路径。我已经记录下来进行验证。所以在我看来,SpEL没有在@PropertySource
注释中得到评估。它应该以那种方式工作吗?
如果是,那么还有其他方法可以读取位于/home/rohit
的外部属性文件吗?出于显而易见的原因,我不想给出绝对的道路。我想避免延长PropertyPlaceHolderConfigurer
课程。
我尝试的另一个选项是将/home/rohit/.invoice
文件夹添加到tomcat类路径中。但似乎Spring不使用System Classpath来解析classpath:
后缀。关于这个的任何指示?
答案 0 :(得分:3)
在@PropertySoure
注释中EL表达式不起作用。您可以使用占位符${...}
,但这也仅限于系统或环境变量。但是,如果要解析用户的主目录,可以使用${user.home}
占位符。
@PropertySource("file:${user.home}/.invoice/config.properties")
这应该按照要求工作。