68.3 Customize the Environment or ApplicationContext before it starts
A SpringApplication
has ApplicationListeners
and ApplicationContextInitializers
that are used to apply customizations to the context or environment. Spring Boot loads a number of such customizations for use internally from META-INF/spring.factories
. There is more than one way to register additional ones:
- Programmatically per application by calling the
addListeners
andaddInitializers
methods onSpringApplication
before you run it. - Declaratively per application by setting
context.initializer.classes
orcontext.listener.classes
. - Declaratively for all applications by adding a
META-INF/spring.factories
and packaging a jar file that the applications all use as a library.
The SpringApplication
sends some special ApplicationEvents
to the listeners (even some before the context is created), and then registers the listeners for events published by the ApplicationContext
as well. See Section 23.5, “Application events and listeners” in the ‘Spring Boot features’ section for a complete list.
It is also possible to customize the Environment
before the application context is refreshed using EnvironmentPostProcessor
. Each implementation should be registered in META-INF/spring.factories
:
org.springframework.boot.env.EnvironmentPostProcessor=com.example.YourEnvironmentPostProcessor