欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring boot 打造统一配置思路 博客分类: Java  

程序员文章站 2024-03-19 10:25:34
...

 何为统一配置多个应用在一个地方配置,优点,更改数据库地址需要修改多个配置文件,到处重启,相当麻烦,用此方法可以让多个spring boot 通用配置在一个yaml文件里面,废话不多说了,下面开始动手实验吧。

 

1、实现EnvironmentPostProcessor接口和Ordered,Ordered接口是指定启动级别,EnvironmentPostProcessor接口是指定启动时候做一些事情,该类如下:

package com.hks.config;

import java.io.IOException;

import org.slf4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.boot.env.YamlPropertySourceLoader;
import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.ClassPathResource;

public class LoadPropertiesConfig implements EnvironmentPostProcessor, Ordered {
	
	protected static Logger logger = org.slf4j.LoggerFactory.getLogger("LoadPropertiesConfig") ;
	@Override
	public int getOrder() {
		return ConfigFileApplicationListener.DEFAULT_ORDER + 1 ;
	}

	@Override
	public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
		try {
			YamlPropertySourceLoader loader = new YamlPropertySourceLoader();
			PropertySource<?> load = loader.load("mainyaml",new ClassPathResource("application.yml") , null);
			environment.getPropertySources().addLast( load );
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 

2、maven工程,创建文件 src/main/resources/META-INF/spring.factories,切忌一定定要是这个路径,其他不行,文件内容如下:

org.springframework.boot.env.EnvironmentPostProcessor=com.hks.config.LoadPropertiesConfig

 

这样就大功告成了,可以写一个启动类查看是否启动成功

package com.hks.epc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication( scanBasePackages = "com.hks")
public class App {
	
	public static void main(String[] args) {
        
        SpringApplication.run(App.class, args) ;
        
	}
}

 

按照这个方法,可以在每个项目的application.yaml文件中配置 需要加载的配置文件,在LoadPropertiesConfig中获取该配置,加载对应的配置文件到项目中去,希望有人能够实现。