企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 68.3 启动前自定义Environment或ApplicationContext 每个`SpringApplication`都有`ApplicationListeners`和`ApplicationContextInitializers`,用于自定义上下文(context)或环境\(environment\)。Spring Boot从`META-INF/spring.factories`下加载很多这样的内部使用的自定义,有很多方法可以注册其他的自定义: * 以编程方式为每个应用注册自定义,通过在`SpringApplication`运行前调用它的`addListeners`和`addInitializers`方法来实现。 * 以声明方式为每个应用注册自定义,通过设置`context.initializer.classes`或`context.listener.classes`来实现。 * 以声明方式为所有应用注册自定义,通过添加一个`META-INF/spring.factories`并打包成一个jar文件(该应用将它作为一个库)来实现。 `SpringApplication`会给监听器(即使是在上下文被创建之前就存在的)发送一些特定的`ApplicationEvents`,然后也会注册监听`ApplicationContext`发布的事件的监听器,查看Spring Boot特性章节中的[Section 23.5, “Application events and listeners” ](https://github.com/cwiki-us-spring-guides/Spring-Boot-Reference-Guide/tree/0047aa8098a650dde0c93f4d2e91754c83468c4b/IV.%20Spring%20Boot%20features/23.5.%20Application%20events%20and%20listeners.md)可以获取完整列表。 在应用上下文刷新前使用`EnvironmentPostProcessor`自定义`Environment`是可能的,每个实现都需要注册到`META-INF/spring.factories`: ```text org.springframework.boot.env.EnvironmentPostProcessor=com.example.YourEnvironmentPostProcessor ```