Spring Boot加载外部配置文件的流程可以大致归纳为以下几个步骤:
bootstrap.yml或bootstrap.properties(如果适用):
bootstrap.yml或bootstrap.properties中的配置。这些配置主要用于连接到远程的配置服务器(如Spring Cloud Config Server)。bootstrap.yml或bootstrap.properties的加载优先级高于application.yml或application.properties。bootstrap配置文件之后(如果有的话),Spring Boot会加载系统级别的配置文件,这些文件通常位于项目的src/main/resources目录下,文件名通常为application.yml或application.properties。ConfigFileApplicationListener类起到了关键作用。它会在Spring Boot启动过程中被实例化,并监听ApplicationEnvironmentPreparedEvent事件来触发配置文件的加载。ConfigFileApplicationListener会根据配置的搜索路径和文件名称规则(如文件名前缀、后缀等)来搜索并加载用户自定义的配置文件。这些配置文件可以是YAML格式(.yml或.yaml)或属性格式(.properties)。bootstrap目录下又在resources目录下),Spring Boot会按照一定的优先级来合并这些配置。通常,bootstrap目录下的配置优先级更高。@Value注解直接注入单个属性值,或使用@ConfigurationProperties注解将一组属性绑定到一个配置类上。总结来说,Spring Boot加载外部配置文件的流程涉及多个步骤,包括加载bootstrap配置文件、系统配置文件、用户自定义配置文件,以及配置文件的合并、覆盖和属性注入等。这个过程中,Spring Boot充分利用了其强大的扩展性和灵活性,支持从多种来源和格式加载配置,并允许用户通过多种方式覆盖和修改默认配置。