springBoot的EnvironmentPostProcessor

EnvironmentPostProcessor

EnvironmentPostProcessor 是 Spring Boot 框架中的一个接口,用于在 Spring 应用程序启动过程中对应用程序的环境进行后处理。

它的作用是在 Spring 应用程序启动时,对应用程序的环境进行修改或扩展。通过实现 EnvironmentPostProcessor 接口,可以在 Spring Boot 应用程序启动过程中,对应用程序的环境属性进行修改、添加或删除。

EnvironmentPostProcessor 接口中有一个方法 postProcessEnvironment,在该方法中可以通过 Environment 对象来修改应用程序的环境属性。可以根据需要,动态地修改应用程序的配置,例如添加额外的配置属性、修改默认的配置属性值等。

EnvironmentPostProcessor 的执行时机是在 Spring 应用程序启动的早期阶段,即在 Spring 环境准备好之前执行。它的执行顺序是在 Spring Boot 的自动配置之前,因此可以在该阶段对环境进行修改,以影响后续的自动配置过程。

需要注意,EnvironmentPostProcessor 是在 Spring Boot 应用程序启动过程中的早期阶段执行的,因此在该阶段可能还没有完全初始化 Spring 上下文,也无法使用依赖注入等功能。因此,在实现 EnvironmentPostProcessor 时,应尽量避免依赖其他 Spring Bean 或进行复杂的业务逻辑处理。

示例代码

EnvironmentPostProcessor 接口添加一个自定义属性:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.stereotype.Component;

@Component
public class CustomEnvironmentPostProcessor implements EnvironmentPostProcessor {

    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
    	// 也可设置一些系统变量
    	// System.setProperty("myName", "Lucifer");
        environment.getPropertySources().addLast(new MyPropertySource());
    }

    private static class MyPropertySource extends MapPropertySource {

        public MyPropertySource() {
            super("myPropertySource", Collections.singletonMap("my.custom.property", "Hello, World!"));
        }
    }
}

创建了一个名为 CustomEnvironmentPostProcessor 的类,实现了 EnvironmentPostProcessor 接口。在 postProcessEnvironment 方法中,向应用程序的环境变量中添加了一个自定义属性 my.custom.property,值为 Hello, World!


配置到spring.factories

在resources 下 META-INF文件夹下加上 spring.factories文件,配置

org.springframework.boot.env.EnvironmentPostProcessor=com.luxifa.config.CustomEnvironmentPostProcessor
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值