使用Spring PropertySource无法通过绝对路径找到属性文件

时间:2018-11-28 06:02:15

标签: java spring

当我尝试使用FileNotFoundException注释加载外部属性文件时,我的Spring应用程序抛出@PropertySource

配置类:

@Configuration
@PropertySource(value = "file:/home/myuser/dev/app_name.properties")
public class ConfigurationClass {

    @Autowired
    Environment env;

    public Connection getConnection() {
        ...
        String properties = env.getProperty("cbs.url");
        ...
    }
}

2 个答案:

答案 0 :(得分:1)

尝试这样给

@PropertySource("file:/home/myuser/dev/app_name.properties")

并确保在该位置提供文件
(或)
如果您不希望在启动应用程序时找不到文件异常,请使用以下文件之一 @PropertySource("file:/home/myuser/dev/app_name.properties",ignoreResourceNotFound=true)

答案 1 :(得分:0)

您可以覆盖PropertySourcesPlaceholderConfigurer bean并在那里提供文件路径。

@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
    configurer.setLocations(new Resource[] {
        new FileSystemResource("/some/path/file.properties"),
        new FileSystemResource("/some/path/other-file.properties")
    });
    return configurer;
  }

通过将初始路径作为系统参数或env变量传递,可以更加灵活。

new FileSystemResource(System.getenv("CONFIG_PATH") + "/some/path/file.properties")

在覆盖bean之后,您的应用程序配置可以像这样简单(无需指定属性源)

@Configuration
public class ConfigurationClass {
   ...

   //configurations can be accessed like this

   @Value("${config.variable.name}")
   private String configValue;

}

我希望这会有所帮助。