当前位置:首页 > 编程笔记 > 正文
已解决

SpringBoot 学习(二)配置

来自网友在路上 165865提问 提问时间:2023-09-26 12:12:55阅读次数: 65

最佳答案 问答题库658位专家为你答疑解惑

2. SpringBoot 配置

2.1 配置文件类型

  • 配置文件用于修改 SpringBoot 的默认配置

2.1.1 properties 文件

  • **properties ** 是属性文件后缀。

  • 文件名:application.properties

  • 只能保存键值对。

  • 基础语法:key=value

    name=why
    
  • 注入配置类

    @Component  // 声明为 Spring 组件
    @PropertySource(value = "classpath:config.properties")
    public class Person {@Value("${name}")private String name;   
    }
    

    需要在 IDEA 的 settings --> FileEncodings 中设置编码格式为 UTF-8。

    在这里插入图片描述

2.1.2 yaml 文件

  • yaml 是一个可读性高,用来表达数据序列化的格式。

  • 文件名:application.ymlapplication.yaml

  • 能保存键值对对象表达式

  • 基础语法:key: 空格 value

    # 键值对
    name: why# 对象
    student:name: whyage: 20student: {name: why,age: 20}# 数组
    pets: - cat- dog- pigpets: [cat,dog,pig]# 表达式
    dog:name: ${siri:siri}_旺财
    
  • 注入配置类

    • 导入依赖

      <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
      </dependency>
      
    • 映射到类

      @Component  // 声明为 Spring 组件
      @ConfigurationProperties(prefix = "person") // 映射配置文件的值到组件
      public class Person {...}
      

2.1.3 配置注入比较

@ConfigurationProperties@Value功能批量注入配置文件中的属性指定注入配置文件中的属性松散绑定√×SpEL√√JSR303 数据校验√×复杂类型封装√×
(1) 松散绑定
  • yaml 文件中的 dog-name 可以为类中的 dogName 赋值

    dog:dog-name: 富贵dog-age: 3
    
    @Component
    @ConfigurationProperties(value = "dog")
    public class Dog {private String dogName;private Integer dogAge;
    }
    
(2) JSR303数据校验
● 检查属性的数据格式。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency>
person:email: 123456
@Component  // 声明为 Spring 组件
@Validated  // 数据格式校验
@ConfigurationProperties(prefix = "person") // 映射配置文件的值到组件
public class Person {@Email(message = "邮箱格式错误")private String email;
}

检查结果:default message [邮箱格式错误];

● 数据格式检查常用注解

Maven:jakarta.validation:jakarta.validation-api:2.0.2

注解作用类型解释@NotNull任何类型属性不能为null@NotEmpty集合集合不能为null,且size大于0@NotBlanck字符串、字符字符类不能为null,且去掉空格之后长度大于0@AssertTrueBoolean、boolean布尔属性必须是true@Min数字类型(原子和包装)限定数字的最小值(整型)@Max同@Min限定数字的最大值(整型)@DecimalMin同@Min限定数字的最小值(字符串,可以是小数)@DecimalMax同@Min限定数字的最大值(字符串,可以是小数)@Range数字类型(原子和包装)限定数字范围(长整型)@Length字符串限定字符串长度@Size集合限定集合大小@Past时间、日期必须是一个过去的时间或日期@Future时期、时间必须是一个未来的时间或日期@Email字符串必须是一个邮箱格式@Pattern字符串、字符正则匹配字符串

2.2 配置文件路径

2.2.1 路径优先级

  • 优先级从高到低排序

    • file 为项目目录,classpath 为资源目录,即 resources

      (1) file:./config/

      (2) file:./

      (3) classpath:/config/

      (4) classpath:/

2.2.2 多环境配置

  • 整合线上、测试或者其他用途的环境配置。
properties 文件
  • application.properties

    spring.profiles.active=test
    
  • application-test.properties

    server.port=8081
    
  • application-dev.properties

    server.port=8082
    
yaml 文件
  • application.yml

    server:port: 8080
    spring:profiles: test
    ---
    server:port: 8081
    spring:profiles: test
    ---
    server:port: 8082
    spring:profiles: dev
    

2.3 配置文件内容

  • 配置文件中的内容都基于 xxxAutoConfiguration 绑定并装配的 xxxProperties 类。
    • 开发者编写配置文件,给 xxxProperties 类属性赋值。
    • xxxAutoConfiguration 使用 xxxProperties 类属性修改配置默认值。
  • 配置文件 --> xxxProperties --> xxxAutoConfiguration --> 修改配置默认值

2.4 总结

  • SpringBoot 启动会加载大量自动配置类,

  • 检查 SpringBoot 默认的自动配置类中是否含有所需配置组件,若没有则需手动添加。

  • 手动添加组件时,SpringBoot 从 Properties 类中获取某些属性,在配置文件中指定这些属性的值即可实现自动装配。

  • xxxAuotoConfiguration:自动配置类;

    xxxProperties:封装配置文件的相关属性;

    xxx.yml:为属性赋值,完成配置。

  • debug: ture :日志打印配置。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"SpringBoot 学习(二)配置":http://eshow365.cn/6-13959-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!