69.2 Externalize the configuration of SpringApplication
A SpringApplication
has bean properties (mainly setters) so you can use its Java API as you create the application to modify its behavior. Or you can externalize the configuration using properties in spring.main.*
. E.g. in application.properties
you might have.
spring.main.web-environment=false spring.main.banner-mode=off
and then the Spring Boot banner will not be printed on startup, and the application will not be a web application.
Note | |
---|---|
The example above also demonstrates how flexible binding allows the use of underscores (_ ) as well as dashes (- ) in property names. |
Properties defined in external configuration overrides the values specified via the Java API with the notable exception of the sources used to create the ApplicationContext
. Let’s consider this application
new SpringApplicationBuilder() .bannerMode(Banner.Mode.OFF) .sources(demo.MyApp.class) .run(args);
used with the following configuration:
spring.main.sources=com.acme.Config,com.acme.ExtraConfig spring.main.banner-mode=console
The actual application will now show the banner (as overridden by configuration) and use three sources for the ApplicationContext
(in that order): demo.MyApp
, com.acme.Config
, com.acme.ExtraConfig
.