本文共 4103 字,大约阅读时间需要 13 分钟。
Springboot有一个全局的配置文件,配置文件的名是固定的。
application.properties : key=value
appication.yml: key: 空格 value
配置文件的作用:修改SpringBoor自动配置的默认值。底层探究—>
YAML (YAML Ain't a Markup Language)YAML不是一种标记语言,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。可用于如: Java,C/C++, Ruby, Python, Perl, C#, PHP等-------------------------------约定-----------------------------------------k: v 表示键值对关系,冒号后面必须有一个空格使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的大小写敏感缩进时不允许使用Tab键,只允许使用空格。松散表示,java中对于驼峰命名法,可用原名或使用-代替驼峰,如java中的lastName属性,在yml中使用lastName或 last-name都可正确映射。-----------------------------------键值关系-----------------------------------(以java语言为例,其它语言类似)对于键与值主要是看能否表示以下内容。普通的值(数字、字符串、布尔)、日期、对象、数组、集合等。
比较传统的xml和yml
8080
server: port: 8080
1、编写一个pojo包下的实体类(简单的)
@Componentpublic class Student { @Value("Ryan") private String name; private String email; private String sex; private Integer age; .....}
2、原始通过 @Value 注解给bean注入属性值
@SpringBootTestclass SpringBootymlApplicationTests { @Autowired private Student student; @Test void contextLoads() { System.out.println(student); }}
3、测试一下
1、在springboot项目中resources 目录下新建一个文件application.yml
person: name: lxx age: 3 happy: false birth: 2021/01/01 maps: { k1: v1,k2: v2} lists: - code - girl - music student: name: JJ
2、编写一个pojo包下的实体类(复杂的)
@Component //注册bean到容器中@ConfigurationProperties(prefix = "person")public class Person { private String name; private Integer age; private Boolean happy; private Date birth; private Mapmaps; private List
3、原始通过 @Value 注解给bean注入属性值@ConfigurationProperties(prefix = "person") 导入一下依赖坐标
org.springframework.boot spring-boot-configuration-processor true
4、测试一下
@SpringBootTestclass SpringBootymlApplicationTests { @Autowired private Person person; @Test void contextLoads() { System.out.println(person); }}
解释@ConfigurationProperties:
/* @ConfigurationProperties 的作用: (1)将配置文件配置的每一个属性值,映射到这个组件中。 (2)告诉springboot将本列多有的属性和配置文件中相关的配置进行绑定 (3)参数 prefix=“XXX” ;和配置文件中XXX下面的属性一一对应 */
IDEA 提示,springboot配置注解处理器没有找到,导入一个依赖;
org.springframework.boot spring-boot-configuration-processor true
@PropertySource: 加载指定的配置文件@ConfigurationProperties: 默认从全局文件中获取值
测试:
1、在resources目录下新建一个person.properties文件
2、指定代码中加载person.properties文件
name=Austin
3、输出测试:
使用properties配置文件在写中文的时候,会出现中文乱码l
在idea中settings–>FileEncodings 中配置
配置yml和配置properties都可以获取到值 , 强烈推荐 yml;如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!
什么是松散的语法?
1、创建一个实体类
2、配置yml文件
3、测试一下
可以自行测试
如何使用?
Springboot 中可以使用@Validated来校验数据,如果数据异常则会抛出以上,方便异常的统一处理
案例:email 格式:
作用: 使用数据校验,可以确保数据的正确性
@NotNull(message="名字不能为空")private String userName;@Max(value=120,message="年龄最大不能查过120")private int age;@Email(message="邮箱格式错误")private String email;空检查@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=) string is between min and max included.日期检查@Past 验证 Date 和 Calendar 对象是否在当前时间之前 @Future 验证 Date 和 Calendar 对象是否在当前时间之后 @Pattern 验证 String 对象是否符合正则表达式的规则
profile是Spring对不同环境提供不同的配置功能的支持,可以通过激活不同的环境版本,实现快速切环境。
#启动springBoot,配置环境,使用 debug: true 来查看spring: profiles: active:
例如:application-test.yml: 代表测试环境的配置application-dev.yml: 代表开发环境配置默认是主配置文件:application.yml
优先级高到底:
项目路径下的config文件夹配置文件-->项目路径下配置文件--->资源路径下的config文件夹配置文件--->资源路径下配置文件
指定位置加载配置文件:
通过spring.config.location来改变默认的配置文件位置
转载地址:http://zbcki.baihongyu.com/