zoukankan      html  css  js  c++  java
  • springboot2.x基础教程:配置文件详解

    当使用Spring Initializr构建springboot项目时,会自动在src/main/resources下生产application.properties文件。今天我们就来聊聊SpringBoot的配置文件。

    配置文件的作用

    SpringBoot采用“习惯优于配置”的理念,项目中存在大量的配置,采用默认配置,让你无需手动配置。
    SpringBoot能够识别properties格式与yml格式的配置文件(我们一般使用yml格式更多)。当需要对默认配置进行修改或者自定义配置时可用通过修改配置文件达到目的。

    配置文件的基本使用

    这是使用yml格式的配置举例,说明application.yml中如何配置,以及代码中如何获取。

    数字,字符串,布尔获取

    配置文件写法:

    version: 1.0
    author: codhome.vip
    flag: true
    

    使用@Value获取:

    @Value("${version}")
    float version;
    @Value("${author}")
    String author;
    //这里的true为默认值
    @Value("${flag:true}")
    boolean flag;
    

    对象、Map写法与获取

    配置文件写法:

    user:
      userName: codehome
      age: 18
      forbidden: true
    

    使用@ConfigurationProperties获取:

    @Configuration
    @ConfigurationProperties(prefix = "user")
    @Data
    public class UserProperties {
        String userName;
        int age;
        boolean forbidden;
    }
    //注入使用
    @Autowired
    UserProperties userProperties;
    

    List、Set、Array获取

    配置文件写法:

    random: 10,20,30
    

    使用@Value获取:

    @Value("#{'${random}'.split(',')}")
    int[] randoms; //List<Integer>也可以
    

    配置文件写法:

    random1:
      users:
        - zhangsao
        - lisi
        - wangwu
    

    使用@ConfigurationProperties获取:

    @Configuration
    @ConfigurationProperties(prefix = "random1")
    @Data
    public class UserProperties {
        List<String> users;
    }
    

    总结下两种注解区别

    多环境配置

    我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml,使用spring.profiles.active激活使用哪一个配置文件

    spring:
      profiles:
        active: dev
    ---
    
    #配置开发环境
    spring:
      profiles: dev
    server:
      port: 9000
    
    ---
    
    #配置生产环境
    spring:
      profiles: prod
    server:
      port: 9100
    
    ---
    
    #配置测试环境
    spring:
      profiles: dev
    server:
      port: 8000
    

    配置文件优先级

    项目内部配置文件

    1. application.properties 与application.yml同一个目录共存时,properties配置优先级更高
    2. ConfigFileApplicationListener中默认配置文件加载顺序
      项目根目录config文件夹>根目录配置文件>resources下cofnig文件夹>resources下配置文件
    3. 当多个配置文件属性不冲突时,配置是互补的
    4. 也可以指定配置文件地址
    java -jar run-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties
    

    外部配置

    1. 操作系统环境变量(比如操作系统的username)
    2. RandomValuePropertySource配置的random.*属性值
    3. jar包外部的application-{profile}.properties配置文件
    4. jar包内部的application-{profile}.properties配置文件
    5. jar包外部的application.properties配置文件(此级别在测试环境经常使用。比如就在jar包同级目录放置一个配置文件,就内覆盖jar包内部所有的配置文件了)
    6. jar包内部的application.properties配置文件,由jar包外向jar包内进行寻找,优先加载待profile的,再加载不带profile的。
    7. @Configuration注解类上的@PropertySource(手动指定导入外部配置文件)
    8. 通过SpringApplication.setDefaultProperties指定的默认属性,自己程序代码里设置,优先级最低

    千里之行,始于足下。这里是SpringBoot教程系列第五篇,所有项目源码均可以在我的GitHub上面下载源码。

  • 相关阅读:
    IE里ActiveXObject的一些实践
    JS兼容性问题汇总
    js:apply/call
    mark 一些近来用过的js库
    (转)时序分析基本概念
    (转载) 使用TimeQuest时序分析器
    (转)Altera对应的时序概念
    有序符号表(二叉树实现,JAVA,算法(四))
    有序符号表(数组实现,JAVA,算法(四),二分法)
    无序符号表(链表实现,JAVA,算法(四))
  • 原文地址:https://www.cnblogs.com/codhome/p/13621050.html
Copyright © 2011-2022 走看看