SpringBoot配置文件高级用法实战
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MapPropertySource;
import org.springframework.core.env.PropertySource;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class CustomEnvironmentPostProcessor implements EnvironmentPostProcessor {
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
Map<String, Object> map = new HashMap<>();
map.put("custom.property", "value");
// 添加自定义配置属性
PropertySource<?> propertySource = new MapPropertySource("customConfigSource", map);
environment.getPropertySources().addLast(propertySource);
}
public static void main(String[] args) {
// 模拟Spring Boot应用启动
SpringApplication application = new SpringApplication(CustomEnvironmentPostProcessor.class);
// 使用模拟环境
application.setWebEnvironment(false);
ConfigurableEnvironment environment = application.run(args).getEnvironment();
// 打印自定义配置属性
System.out.println(environment.getProperty("custom.property"));
}
}
这段代码定义了一个EnvironmentPostProcessor
的实现,在环境初始化之后,添加了一个名为customConfigSource
的MapPropertySource
,里面包含了一个名为custom.property
的自定义配置属性。在主方法中,我们模拟了Spring Boot应用的启动,并打印出了custom.property
的值。这个例子展示了如何在Spring Boot应用启动时,动态地向环境中添加自定义的配置属性。
评论已关闭