介绍
SpringBoot支持动态的读取文件,留下的扩展接口org.springframework.boot.env.EnvironmentPostProcessor。
这个接口是spring包下的,使用这个进行配置文件的集中管理,而不需要每个项目都去配置配置文件。
这种方法也是springboot框架留下的一个扩展
举例
实现EnvironmentPostProcessor
@Component
public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
try{
//获取需要读取的配置文件
InputStream inputStream = new FileInputStream("springboot.properties");
Properties properties = new Properties();
properties.load(inputStream);
PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("my",properties);
environment.getPropertySources().addLast(propertiesPropertySource);
}catch (IOException e){
e.printStackTrace();
}
}
}
在classpath定义一个META-INF文件夹然后在其下面先建spring.factories文件,在其中指定:
org.springframework.boot.env.EnvironmentPostProcessor=com.MyEnvironmentPostProcessor
测试
@SpringBootApplication
public class Application {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(Application.class,args);
String username = context.getEnvironment().getProperty("jdbc.root.user");
String password = context.getEnvironment().getProperty("jdbc.root.password");
System.out.println("username==="+username);
System.out.println("password==="+password);
context.close();
}
}