容器初始化器和配置环境后处理器
容器初始化器
与传统Spring的容器后处理器(也可对容器做一些定制)对比,此处的容器初始化器的执行时机要更早一些。
容器初始化器负责可对Spring容器执行初始化定制。
就是在启动项目的时候,在容器初始化器中可以编写一些业务逻辑,能在项目启动主配置类的时候快速初始化。
创建容器初始化的步骤:
步骤1: ApplicationContextInitializer接口的实现类被称为容器初始化器,该接口中initialize(C ctx)方法可对Spring容器进行设置
步骤2、 注册初始化器(有两种方法):
- 方法1: 调用SpringApplication的addInitializers()或SpringApplicationBuilder的initializers()方法添加初始化器。
- 方法2: 使用META-INF/spring.factories文件来配置初始化器。在该文件中添加如下代码即可注册初始化器
代码如下:
★ 配置环境后处理器:
-
什么是配置环境后处理器:
配置环境后处理器(EnvironmentPostProcessor)是Spring框架中的一个接口,用于在Spring容器加载配置环境完成之后,对配置进行进一步处理和修改。
就是当springboot项目启动之后,【配置环境】加载创建出来后,这个【EnvironmentPostProcessor接口的实现类】就会对这些配置环境进行后处理,就是对这些配置环境进行一些额外的定制。
定制:就是一些添加、修改的操作。比如让springboot额外加载我们自定义的一些配置文件。 -
什么是“配置环境”:
Spring Boot提供了Enviroment来代表配置环境。
Enviroment 就代表了通过 application.properties | yml (及其他类似配置方式,包括环境变量、系统参数、命令行参数等)所提供的全部的配置信息的总和。这些配置就统称为 配置环境。
就是启动一个项目后,springboot会自动加载各种配置文件,各种配置文件总和就叫做配置环境。
▲ 步骤:
(1)EnvironmentPostProcessor接口的实现类被称为配置环境后处理器,
该接口中postProcessEnvironment()方法可对Environment进行设置。
Environment提供了一个getPropertySources(),该方法可返回。
(2)注册初始化器:
- 使用META-INF/spring.factories文件来配置环境后处理器。在该文件中添加如下代码即可注册初始化器。
org.springframework.boot.env.EnvironmentPostProcessor=\
cn.ljh.boot.custom.myEnvironmentProcessor
代码示例:
1、先定义一个配置环境后处理器的类。
这个类的作用就是让我们自定义的配置文件生效。
让springboot项目在启动并加载完成默认的各种配置文件之后,额外加载我们自定义的配置文件。
2、创建自定义的【配置环境后处理器】配置文件。
3、这一步的作用就是让springboot容器在加载的时候会去加载这个myEnvironmentProcessor类。
创建好【配置环境后处理器】这个myEnvironmentProcessor类和myEnvironment.properties配置文件后,需要将这个类注册到resources 包下面的META-INF 里面的 spring.factories 配置文件里面。
spring.factories 这个配置文件就是用来做注册的,注册一些文件。
4、测试【配置环境后处理器】的配置文件是否生效,可以通过以下操作。
在Dog类的属性字段里面,通过@Value注解,看能不能把自定义配置文件myEnvironment.properties里面的属性值 设置给Dog类里面的字段。
执行启动类,发现springboot把自己的一些默认的配置文件都加载完成后,最后才执行把自定义配置文件myEnvironment.properties 里面的属性的值设置到 Dog类里面的字段 的操作。
因为我们原本就是让这个myEnvironment.properties自定义配置文件排在springboot容器加载的最后时机才执行。
所以这个【配置环境后处理器】操作成功
总结:
1、把myEnvironmentProcessor类注册到spring.factories配置文件里面,springboot项目在启动的时候才会去加载这个类。
2、然后通过myEnvironmentProcessor类里面的一些自定义配置,让springboot在启动完自己默认的一些配置后,再按我们自己的要求,来加载我们自定义的配置文件myEnvironment.properties。
3、然后通过操作看我们自定义的配置环境后处理器是否生效。
(配置环境后处理器: 就是让我们自定义的配置文件在springboot启动的时候并且加载完自己的所有配置文件(所有配置文件称"配置环境")之后,再去额外执行加载这个自定义配置文件的操作。)
在回顾一次:
配置环境后处理器:就是在Spring容器加载配置环境完成之后,对配置进行进一步处理和修改的操作。
我觉得也可以叫做配置环境后处理类。