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应用启动时,动态地向环境中添加自定义的配置属性。