Spring boot war包引用外部配置文件
程序员文章站
2022-04-06 18:49:43
...
引用方法
由于不知道是否可以通过使用@PropertySource注解的形式,因而采用了网络中比较通用的代码形式
直接先上代码
1、不论是引用yml还是properties 都要编写一个类实现EnvironmentPostProcessor,但是两者解析的形式稍微有些不一样。
a、properties格式
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
File file = new File(configPath);
if (file.exists()){
MutablePropertySources propertySources = environment.getPropertySources();
Properties properties = loadProperties(file);
propertySources.addFirst(new PropertiesPropertySource("Config",properties));
}
}
private Properties loadProperties(File file){
FileSystemResource resource = new FileSystemResource(file);
try{
return PropertiesLoaderUtils.loadProperties(resource);
}catch (IOException e){
throw new IllegalStateException("Failed to load local settings from " + file.getAbsolutePath(),e);
}
}
b、yml格式
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
File file = new File(configPath);
if (file.exists()){
FileSystemResource resource = new FileSystemResource(file);
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(resource);
MutablePropertySources propertySources = environment.getPropertySources();
propertySources.addFirst(new PropertiesPropertySource("Config", yaml.getObject()));
}
}
2、引入Spring配置
在resouce下resources文件夹下创建一个文件夹名为META-INF,在里面创建一个spring.factories的文件
其中指定
org.springframework.boot.env.EnvironmentPostProcessor属性值为刚刚创建的类使用com.xxx.MyEnvironmentPostProcessor
原理
等待研究
上一篇: python元组与字典的详细介绍
下一篇: Oracle的存储过程写法。