其他分享
首页 > 其他分享> > ssss) 页面跳转和数据处理sss

ssss) 页面跳转和数据处理sss

作者:互联网

springboot在底层已经自动配置了很多东西,但有些东西我们是不需要或者需要改的,比如数据源

springboot提供一个全局的配置文件,供我们修改他的默认值

这个全局文件名称固定,但可以使用两种格式:application.yaml,application.properties

两种格式的语法:

官网强烈推荐yaml格式

何为yaml?

yaml是以数据为中心的,一种记录数据的标记语言

yaml的基础语法:声明:语法要求严格!

1,基本数据类型及string   K: V形式

value的值可以直接写, 字符串默认不用加上双引号或者单引号;

  name: 黄易安
  age: 27

注意:

2,map类型的

maps: {k1: v1,k2: v2}
#或者
maps:
    k1: v1
    k2: v2

3,数组类型的

  list:
    - code
    - music
    - girl
#或者
  list:[code,music,girl]

4,对象类型,类名及其属性

  dog:
    name: 旺财
    age: 3

 

yaml文件可以直接向实体类注入值:使用注解@ConfigurationProperties ,后面跟的"people"即下面的yaml文件的k值

对应实体类创建:

@Component
@Data
@ConfigurationProperties("people")
public class people {
    
    private String name;
    private Integer age;
    private Dog dog;
    private boolean happy;
    private Date birth;
    private Map<Object,Object> maps;
    private List<Object> list;
    }

对应yaml:

people:
  name: 黄易安
  age: 27
  dog:
    name: 旺财
    age: 3
  happy: true
  birth: 2021/09/07
  maps: {k1: v1,k2: v2}
  list:
    - code
    - music
    - girl

当使用properties时,也可以导入值,但比较麻烦,方法如下:

使用注解:@PropertySource(value = "classpath:person.properties")  导入对应配置文件

在通过spring表达式,${}获取对应配置文件里的值

@PropertySource(value = "classpath:person.properties")
@Component 
public class Person {

    @Value("${name}")
    private String name;

    ......  
}

这种方法需要一个一个匹配,不能像yaml一样,全部匹配~

 

yaml可以使用spring表达式,如下,当然了@value也可以使用

person:
    name: qinjiang${random.uuid} # 随机uuid
    age: ${random.int}  # 随机int
    happy: false
    birth: 2000/01/01
    maps: {k1: v1,k2: v2}
    lists:
      - code
      - girl
      - music
    dog:
      name: ${person.hello:other}_旺财
      age: 1

 

两者对比:

 

 

 1,configurationproperties可以自己匹配,但当K值和pojo类的属性不一致时,pojo的类属性值会为null

2,松散绑定,驼峰转换,pojo类里 userName,yaml里 user-name ,会自动转换,匹配成功

3,spel,即${}

4,  303校验,可以在类上使用@Validated开启校验,并通过对应例如,邮箱格式检查@Email在属性注解,进行校验,如下:

@Component
@Validated
@ConfigurationProperties("people")
public class people {
    @Email
    private String name;
    private Integer age;
    private Dog dog;
    private boolean happy;
    private Date birth;
    private Map<Object,Object> maps;
    private List<Object> list;

    }

结果如下:

 

 各种检查的注解如下:

@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 对象是否符合正则表达式的规则

.......等等
除此以外,我们还可以自定义一些数据校验规则

 

 

标签:value,name,age,private,ssss,yaml,sss,跳转,String
来源: https://www.cnblogs.com/carry-huang/p/15259159.html