第一种,使用 ApplicationListener
/META-INF/spring.factories
org.springframework.context.ApplicationListener=LoadProperty
@Configuration
public class LoadProperty implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {
public void postProcessEnvironment() {
try {
Enumeration<URL> urls = ClassLoader.getSystemResources("属性文件目录");
while (urls.hasMoreElements()){
URL url = urls.nextElement();
UrlResource resource = new UrlResource(url);
Properties properties = PropertiesLoaderUtils.loadProperties(resource);
this.environment.getPropertySources().addLast(new PropertiesPropertySource(url.getPath(), properties));
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
environment = event.getEnvironment();
postProcessEnvironment();
}
ConfigurableEnvironment environment;
@Override
public int getOrder() {
return -101;
}
}
第二种:
使用用 EnvironmentPostProcessor
/META-INF/spring.factories
org.springframework.boot.env.EnvironmentPostProcessor=MyConfigure
@Configuration
public class MyConfigure implements EnvironmentPostProcessor, Ordered {
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
Properties properties = PropertiesLoaderUtils.loadProperties(resource);
environment.getPropertySources().addLast(new PropertiesPropertySource("name", properties));
}
@Override
public int getOrder() {
return -100;
}
}