当我尝试使用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");
...
}
}
答案 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;
}
我希望这会有所帮助。