当前位置: 首页 > news >正文

SpringBoot 学习(二)配置

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 :日志打印配置。

http://www.lryc.cn/news/175759.html

相关文章:

  • 西门子828d授权密钥破解经验分享 I7I54833762
  • 06贪心:跳跃游戏
  • 鄙视测试,理解测试,成为测试
  • MySQL数据库基础知识要点总结
  • 基础运维(一)YUM仓库
  • 递归算法讲解,深度理解递归
  • 网络通信(套接字通信)(C/C++)
  • anaconda navigator启动时一直卡在 loading applications 页面
  • 力扣刷题-链表-删除链表的倒数第N个节点
  • Blender DreamUV插件使用简明教程
  • AI在线工具分享
  • Matlab批量处理测试数据的方法:以VCO的调谐测试曲线处理为例
  • VScode断点调试vue
  • 20吨屠宰鸡鸭鹅一体化污水处理设备加工厂家
  • android被杀以后fragments缓存重建问题和测试方法
  • Visual Studio 2017 安装
  • day5|242.有效的字母异位词、349. 两个数组的交集
  • 【Python基础】常用模块学习:sys|os|pytest
  • 【煤矿虚拟仿真体验】VR采煤机技能培训有效提高训练效果
  • 渲染路径RenderingPath
  • 【Java】泛型 之 extends通配符
  • 光谱-空间特征分割提取:多光谱图像压缩
  • 绝缘子主要尺寸
  • 什么是哈希表?如何使用哈希表进行数据存储和查找?
  • 脑机接口的发展研究
  • 短期光伏发电量短期预测(Python代码,先对异常值处理,再基于XGBoost模型预测)
  • SpringCloud Gateway--Predicate/断言(详细介绍)中
  • Linux内核启动流程-第一阶段汇编流程简介
  • SpringBoot-Druid
  • PAT甲级真题1006:签到与签出