Spring Annotation

Spring Config

  • spring.config.name and spring.config.location are used very early to determine which files have to be loaded so they have to be defined as an environment property (typically OS env, system property or command line argument).


  • Spring Boot uses a very particular PropertySource order that is designed to allow sensible overriding of values, properties are considered in the following order1:

    • Command line arguments.
    • Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property)
    • JNDI attributes from java:comp/env.
    • Java System properties (System.getProperties()).
    • OS environment variables.
    • A RandomValuePropertySource that only has properties in random.*.
    • Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants)
      • 多个profile,越靠后引入优先级越高
      • 一个profile文件里使用spring.profiles.include引入的配置,优先级比本文件内的配置高
    • Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants)
    • Application properties outside of your packaged jar (application.properties and YAML variants).
    • Application properties packaged inside your jar (application.properties and YAML variants).
    • @PropertySource annotations on your @Configuration classes.
    • Default properties (specified using SpringApplication.setDefaultProperties).
  • Creating your own auto-configuration

    • 使用@Configuration注解来实现auto-configuration类.
    • @AutoConfigureAfter, @AutoConfigureBefore, @AutoConfigureOrder指定顺序.
    • 定位需要自动配置的类, spring boot 会检查已发布的jar包里是否存在文件META-INF/spring.factories. 文件内容如下:

Disabling specific auto-configuration

Disabling specific auto-configuration


public class MyConfiguration {



1. Spring Externalized Configuration
Copyright © lowzj all right reserved,powered by GitbookLast Modified: 2023-03-12 01:06

results matching ""

    No results matching ""