美文网首页
03.`Spring Boot` 的配置文件

03.`Spring Boot` 的配置文件

作者: 风安峻_ | 来源:发表于2020-09-05 08:12 被阅读0次
1. 介绍
  1. 官方配置文档

  2. 创建工程后默认在resources下有一个application.properties文件

    创建工程默认的包结构
    1. 推荐将该文件改为.yml文件
    2. 名字默认为application,不建议修改
  3. Spring Boot通常使用两种格式的配置文件

    1. application.properties

      server.port=8080
      server.servlet.context-path=/api/v1
      
    2. application.yml

      server:
        port: 8080
        servlet:
          context-path: /api/v1
      
2. 常用配置文件位置
  1. spring boot 的配置文件可以在classpath下,也可以在指定的路径
  2. 加载顺序
    1. 首先在classpath:/config/查找配置文件
    2. 然后在classpath:下查找配置文件
  3. 当同级目录下同时有application.propertiesapplication.yml文件,properties文件的属性会覆盖掉.yml文件的属性
3. 获取自定义属性
  1. @Value单值获取

    1. application.yml

      user:
        username: 老王
        age: 18
        email: abc@126.com
      
    2. JavaBean

      import lombok.Data;
      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.stereotype.Component;
      
      @Data
      @Component
      public class UserConfig {
          @Value("${user.username}")
          private String name;
          @Value("${user.age}")
          private Integer age;
          @Value("${user.email}")
          private String email;
      }
      
    3. 单元测试

      import lombok.extern.slf4j.Slf4j;
      import org.junit.jupiter.api.Test;
      import org.springframework.boot.test.context.SpringBootTest;
      
      import javax.annotation.Resource;
      
      @Slf4j
      @SpringBootTest
      public class UserConfigTest {
          @Resource
          private UserConfig userConfig;
      
          @Test
          public void test() {
              log.info(userConfig.toString());
          }
      }
      

      结果:

      运行结果

      之所以转为了Unicode,是因为老王没有加双引号。

      中文加双引号 中文加双引号后结果
    4. 注意

      user:
        username: 老王
        age: 18
        email: abc@126.com
        address:
          - 北京
          - 上海
          - 广州
      
      1. username的这个key不能写成name,不然获取的是电脑用户名
      2. 不能获取复杂类型的值,比如获取address的值报错
  2. @ConfigurationProperties批量获取

    1. application.yml

      user:
        username: "老王"
        age: 18
        email: abc@126.com
        address:
          - "北京"
          - '上海'
          - "广州"
      
    2. JavaBean

      import lombok.Data;
      import org.springframework.boot.context.properties.ConfigurationProperties;
      import org.springframework.stereotype.Component;
      
      import java.util.List;
      
      @Data
      @ConfigurationProperties("user")
      @Component
      public class UserConfig {
          private String name;
          private Integer age;
          private String email;
          private List<String> address;
      }
      
    3. 单元测试

      import lombok.extern.slf4j.Slf4j;
      import org.junit.jupiter.api.Test;
      import org.springframework.boot.test.context.SpringBootTest;
      
      import javax.annotation.Resource;
      
      @Slf4j
      @SpringBootTest
      public class UserConfigTest {
          @Resource
          private UserConfig userConfig;
      
          @Test
          public void test() {
              log.info(userConfig.toString());
          }
      }
      

      结果:

      结果

      上海用了单引号''依然转为了Unicode

      application.yml
  3. 注意

    1. @ConfigurationProperties可以获取集合的值
    2. 单引号''依然会转码,双引号""不会
    3. 要使用@Component或者@ConfigurationJavaBean标记为配置类,配置才会生效
  1. @Value以及@ConfigurationProperties对比

    说明 @ConfigurationProperties @Value
    作用 批量获取配置文件中的属性 单值获取
    松散绑定(松散语法) 支持 不支持
    SpEL 不支持 支持
    JSR303数据校验 支持 不支持
    复杂类型封装 支持 不支持
    1. 松散语法
      • JavaBean中的驼峰命名,在yml中用单词小写-连接
      • 比如private Strng contextPathyml中可以对应为context-path,也可以对应驼峰命名法
      • 推荐在yml配置中使用松散语法,用于区分
4. 多配置文件
  1. 主配置文件文件名是application-{profile}.properties/yml,默认使用application.properties的配置,推荐使用yml配置
    1. 在项目的配置文件,可以为了解耦生产测试分开配置

      # 主配置文件
      application.yml
      # druid 配置文件
      application-druid.yml
      # mybatis 配置文件
      application-mybatis-plus.yml
      # 开发环境配置文件
      application-dev.yml
      # 生产环境配置文件
      application-prod.yml
      
    2. 两种方式指定配置文件

      1. 主配置文件application.yml中使用spring.profiles.active属性指定

        spring:
          profiles:
            active: dev,druid,mybatis-plus 
        
      2. 项目打包为jar后,通过命令行参数的方式指定配置文件

        java -jar app.jar --spring.profiles.active=prod
        

相关文章

网友评论

      本文标题:03.`Spring Boot` 的配置文件

      本文链接:https://www.haomeiwen.com/subject/nnrtektx.html