SpringBoot之application.yml
SpringBoot的配置文件application.yml
序章:SpringBoot不做配置也可以跑,配了就是让我们自定义。我们都是自定义的,不然只能写个Controller,Hello World之类的。
一、SpringBoot的配置文件
-
SpringBoot使用一个全局的配置文件,配置文件的名称是固定的,application.properties or application.yml
-
配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了。
1.application.properties
server.port = 8081
2.application.yml(推荐)
-
yml是"YAML Ain't a Markup Language"的递归缩写。”YAML Another markup Language“,但强调这种语言以数据为中心,而不是以标记语言为重点,用反向缩略语重命名。
#对空格敏感
#可以将值注入到我们的配置类中
server
二、yml的几种用法
-
Spring的赋值方式
-
yml的赋值方式
person: {name:lele,age: 22}
-
@ConfigurationProperties的作用:
-
将配置文件中配置的每一个属性的值,映射到这个组件中;
-
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
-
参数prefix = "person": 将配置文件中的person下面的所有索性一一对应
-
只有这个组件是容器中的组件,才能使用容器中的@ConfigurationProperties功能
-
-
yml可以松散绑定
last-name
对应
private String lastName:
结论:
-
配置yml和配置properties都可以获取到值,推荐yml
-
如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用以下@Value
-
如果说,我们专门编写一个JavaBean来和配置文件进行映射,就直接使用@ConfigurationProperties,不用犹豫。
三、JSR303数据校验
1.添加依赖
<!--JSR303校验的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2.@Validated //数据校验
常用的校验注解:
空检查
@Null 验证对象是否为null
@NotNull 验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty 检查约束元素是否为NULL或者是EMPTY.
Booelan检查
@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=) Validates that the annotated string is between min and max included.
日期检查
@Past 验证 Date 和 Calendar 对象是否在当前时间之前
@Future 验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern 验证 String 对象是否符合正则表达式的规则
数值检查,建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null
@Min 验证 Number 和 String 对象是否大等于指定的值
@Max 验证 Number 和 String 对象是否小等于指定的值
@DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
@DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
@Digits 验证 Number 和 String 的构成是否合法
@Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。
@Range(min=, max=) 检查数字是否介于min和max之间.
@Range(min=10000,max=50000,message="range.bean.wage")
private BigDecimal wage;
@Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证)
@CreditCardNumber 信用卡验证
@Email 验证是否是邮件地址,如果为null,不进行验证,算通过验证。
@ScriptAssert(lang= ,script=, alias=)
@URL(protocol=,host=, port=,regexp=, flags=)
四、多环境配置文件及配置文件的位置
1.配置文件的位置
file: 指的是项目的目录
classpath: 指的是resources
-
file: ./config/
-
file: ./
-
classpath: /config/
-
classpath: /
优先级:file: ./config/ > file: ./ > classpath: /config/ > classpath: /
2.SpringBoot的多环境配置
server
五、配置文件里面到底能写什么? 和spring.factories 之间的联系
-
spring.factories中HttpEncodingAutoConfiguration
//表示这是一个配置类
-
对用的ServerProperties
对应的配置文件中server. ...
结论:配置文件中可以配置什么,就看配置类里有什么,不然,配置文件中写了,配置类中也没法接收。
自动装配的原理:
-
SpringBoot启动会加载大量的自动配置类
-
看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中;
-
我们再来看这个自动配置类中到底配置了哪些组件:(只要我们用的组件在,就不用手动配置了)
-
给容器中的自动配置类添加组件的时候,会从properties类中获取某些属性。我们只需要在配置文件中指定这些属性的值即可;
xxxxAutoConfiguration:自动配置类;给容器中添加组件
xxxxProperties:封装配置文件中的相关属性
#开启springboot的调试类
debug=true
启动后看日志:
Positivematches:(自动配置类启用的:正匹配)
Negativematches:(没有启动的,,没有匹配成功的自动配置类)
posted on 2021-12-12 22:37 lilele200706 阅读(681) 评论(0) 收藏 举报
浙公网安备 33010602011771号