在Spring-Boot 2.2.0和Java8项目中。
我在应用程序中有一些属性-(profileActive).properties(因此,在战争中),我想外部化到一个普通的配置文件(战争之外)。这是因为这些属性每半年更改一次,将它们保存在纯文本文件中更加方便(我可以使用sed命令,等等)。
可变属性文件的位置应在属性mutableproperties.project.root的application-(profileActive).properties(随环境而变化)中指定。
我正在寻找一种解决方案,在该解决方案中,所有@Value都可以正常工作,好像什么都没发生(重新启动后)。
我正在尝试使用以下类为一个文件加载这些属性:
@Configuration public class MutableProperties { @Value("${mutableproperties.project.root}") private String mutablePropertiesRoot; private String configFile(String type) { StringBuffer file = new StringBuffer(mutablePropertiesRoot).append(File.pathSeparatorChar); file.append(type).append(".properties"); return file.toString(); } @Bean public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurerDb() { PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer(); properties.setLocation(new FileSystemResource(configFile("db"))); properties.setIgnoreResourceNotFound(false); return properties; } }
问题是mutableRoot是null
(并且在所有应用程序-(profileActive).properties中都为:]
mutableproperties.project.root=/etc/properties/boot/myproject
我尝试过使用静态PropertySourcesPlaceholderConfigurer,但是它不适合,因为文件名实际上是动态的。
在Spring-Boot 2.2.0和Java8项目中。我的应用程序中有一些属性-(profileActive).properties(因此,在战争中),我想外部化到一个普通的配置文件(战争之外)。这是...
将FileInputStream与用于可变文件的固定磁盘文件系统路径一起使用。
InputStream input = new FileInputStream("D:/java/myapp/config.properties");