SpringBoot 配置文件

本文详细介绍了SpringBoot配置文件的优先级,包括不同位置、不同类型的配置文件加载顺序,以及如何自定义配置文件。同时讲解了通过@Value和@ConfigurationProperties加载属性,使用随机数,以及命令行参数和多环境配置的设置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文将介绍SpringBoot配置文件优先级与自定义配置文件的相关用法总结。

  • springboot 配置文件的优先级

属性文件是最常见的管理配置属性的方式。Spring Boot 提供的 SpringApplication 类会搜索并加载 application.properties 文件来获取配置属性值。SpringApplication 类会在下面位置搜索该文件,加载顺序如下:

  1. properties vs yml
     
    优先级 :properties > yml 
  2. application.properties  vs /config/application.properties
     
    优先级 : /config/application.properties > application.properties 
  3. /config/application.yml vs application.properties 

    优先级:/config/application.yml > application.properties 
      config的优先级高与文件类型的优先级
  4. properties vs properties-default.properties

    优先级:application-default.properties > application.properties
  5. properties vs properties-{profile(非default)}.properties
     
    优先级:application.properties > properties-{profile(非default)}.properties
  6. application-default.yml vs application.properties

    优先级:application-default.yml > application.properties
    default的优先级高于文件类型的优先级
  7. application-default.yml vs /config/application.properties

    优先级:application-default.yml > /config/application.properties
    ddefault的优先级是高于config目录
  8. /config/application-default.yml vs classpath:/application-default.yml

    优先级:config/application-default.yml > application-default.yml

    总结:
    config/application-default.properties > config/application-default.yml > application-default.properties > application-default.yml > config/application.properties > config/application.yml > application.properties > application.yml
  • springboot 配置文件先关配置与读取介绍
  1. application.properties 相关配置
    参考官方配置
  2. 自定义属性与加载
    自定义属性文件config.properties:
    com.chf.config.name=tom
    com.chf.config.age=1
  3. 加载方式
    a、通过@Value方式加载
    @Component
    @Data
    public class ConfigProperties {
        @Value("${com.chf.config.name}")
        private String name;
        @Value("${com.chf.config.age}")
        private Integer age;
    
    }
    b、通过@ConfigurationProperties加载
    @Configuration
    @PropertySource("classpath:config/config.properties")
    @ConfigurationProperties(prefix = "com.chf.config")
    @Data
    public class ConfigBean {
        private  String name;
        private Integer age;
    
    }
  4. 参数引用
    com.chf.config.name=tom
    com.chf.config.age=19
    com.chf.config.desc:name is ${com.chf.config.name} age is ${com.chf.config.age}
  5. 随机数
    Spring Boot 通过 RandomValuePropertySource 提供了很多关于随机数的工具类。概括可以生成随机字符串、随机 int 、随机 long、某范围的随机数。
    com.chf.config.id=${random.uuid}
    com.chf.config.name=${random.long}
    com.chf.config.age=${random.int[18,108]}
    com.chf.config.desc:${random.value}
  6. 命令行参数设置
    可以通过jar命令行设置  java -jar xxx.jar --server.port=8888 等价于在配置文件中配置,可以通过SpringApplication.setAddCommandLineProperties(false); 设置屏蔽命令行参数设置。
  7. 多环境配置
    很多场景的配置,比如数据库配置、Redis 配置、注册中心和日志配置等。在不同的环境,我们需要不同的配置去运行项目:
    application-dev.properties:开发环境
    application-test.properties:测试环境

    application.properties 文件中,设置 spring.profiles.active 属性,比如 配置了 test,则加载的是 application-test.properties :

    spring.profiles.active=test

    jar 运行的方式,通过设置 -Dspring.profiles.active=test 去指定相应的配置:
    java -jar -Dspring.profiles.active=test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值