Spring Boot uses a very particular PropertySource order that is designed to allow sensible overriding of values. Properties are considered in the following order:
-
Devtools global settings properties on your home directory (
~/.spring-boot-devtools.propertieswhen devtools is active). -
@TestPropertySourceannotations on your tests. -
propertiesattribute on your tests. Available on@SpringBootTestand the test annotations for testing a particular slice of your application. - Command line arguments.
- Properties from
SPRING_APPLICATION_JSON(inline JSON embedded in an environment variable or system property). -
ServletConfiginit parameters. -
ServletContextinit parameters. - JNDI attributes from
java:comp/env. - Java System properties (
System.getProperties()). - OS environment variables.
- A
RandomValuePropertySourcethat has properties only inrandom.*. -
Profile-specific application properties outside of your packaged jar (
application-{profile}.propertiesand YAML variants). -
Profile-specific application properties packaged inside your jar (
application-{profile}.propertiesand YAML variants). - Application properties outside of your packaged jar (
application.propertiesand YAML variants). - Application properties packaged inside your jar (
application.propertiesand YAML variants). -
@PropertySourceannotations on your@Configurationclasses. - Default properties (specified by setting
SpringApplication.setDefaultProperties).