SpringBoot配置加载,各配置文件优先级对比

1.SpringBoot配置文件

SpringBoot使用一个以application命名的配置文件作为默认的全局配置文件。支持properties后缀结尾的配置文件或者以yml/yaml后缀结尾的YAML的文件配置。

以设置应用端口为例:

properties文件示例(application.properties):
server.port=80
YAML文件示例(application.yml):
server:
  port: 80

  

两者同时存在情况

假如各配置文件都配置了不同的端口,那么SpringBoot会使用哪一个端口呢?带着疑问试验一下实例

在resources目录下创建两个配置文件,一个为application.yml配置文件,设置端口为8090,另一个为application.properties配置文件,设置端口为8070;

8070被启动说明如果两个配置文件同时存在,application.properties优先级高于application.yml。

2.配置文件目录

SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同。
可放置目录(优先级从高到低)

    • file:./config/ (当前项目路径config目录下);
    • file:./ (当前项目路径下);
    • classpath:/config/ (类路径config目录下);
    • classpath:/ (类路径config下).
    • 一般在resources目录下创建的即为classpath目录
    • 3

      1. 在resources/目录下配置文件设置端口为8888;
      2. 在resources/config目录下配置文件设置端口为9999;
      3. 在项目路径下配置文件设置端口为6666;
      4. 在项目路径config目录下配置文件设置端口为7777;最后运行结果端口7777被打开

        @ConfigurationProperties与@Value两种注解对比

        比较项@ConfigurationProperties@Value
        全量注入 支持
        松散绑定(Relaxed binding) 支持
        SpEL 支持
        JSR303 支持 不支持
        **松散绑定:**驼峰命名(userName)、横干拼接(user-name)、下划线(user_name)之间可以互相识别绑定称为做松散绑定
        **JSR303:**通过@Email,@Nullable,@Digits 等等注解进行邮箱、判空、数字格式等等数据的校验,更多相关内容请参考IBM的中文文档:https://www.ibm.com/developerworks/cn/java/j-lo-jsr303/index.html
        @ConfigurationProperties通常用于将配置全量注入某个类中;
        @Value通常用于注入某一些特定配置值中;
posted @ 2020-10-18 14:16  逝年的我们  阅读(614)  评论(0编辑  收藏  举报