SpringBoot;yaml配置, JSR303校验

一,配置文件

  springboot使用一个全局配置文件,配置文件名称是固定的

    1.application.properties

      语法结构:key=value

    2.application.yaml

      语法结构:key= 空格value

  配置文件的作用:修改SpringBoot自动装配的默认值,因为springboot在底层都已经自动配置好了

二,什么是YAML

说明:k: v,对空格要求十分高

  yaml不是一种语言,他是一种格式,与json差不多,它不是标记语言却具备标记语言的作用,标记语言如xml,html

  对比:

  yaml配置

server:
    port: 8080

  xml配置

server.port:8080

yaml格式配置官方推荐

三,给属性赋值的几种方式

  1.实例化对象

    new

  2.通过@Value注入属性和@Autowired去标记对象(如果有多个对象,可通过@Qualifier("name"),去指定绑对象)

//交给spring容器托管,注册bean
@Component
public class Dog {

    @Value("旺财")
    private String name;
    @Value("3")
    private Integer age;

}

//测试
    @Autowired
    //如果注册多个对象(@Value)
    //可通过@Qualifier("name"),去指定找对象
     private Dog dog;

    @Test
    void contextLoads() {
        System.out.println(dog);
        }

  3.yaml格式给实体类赋值

port:
  server: 8081

person:
  name: king
  age: 3
  happy: false
  birth: 2019/11/02
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - music
    - girl
  dog:
    name: 旺财
    age: 3
@Component
//加前缀,找相对应的数据
@ConfigurationProperties(prefix="person")
public class    Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

注意:@ConfigurationProperties(prefix="person")作用:给提示

三,ymal注入属性的几个特点、

  1.@ConfigurationProperties,作用在类上,写一次就够了(yaml注入),@value需每个字段都要写(注解注入)

  2.松散绑定:比如:,last-name跟lastName一样。-后面跟着的字母默认是大写,这就是松散绑定

  3.JSR303数据校验:在字段增加一层过滤验证,可以保证数据的合法性

  4.复杂类型封装,yaml可以封装对象,@value就不支持

结论:

  配置yaml和我properites都能获取到值,但yaml可读性更强(强烈推荐)

  如果在业务中,只需要获取配置文件中的某个值,可以使用一下@value

   如果说,专门配置编写一个JavaBean来和配置文件进行映射,就直接使用.@ConfigurationProperties(yaml),绝对是不二选择

四,JSR303校验

  @Validated,作用在类上,数据校验,springboot的注解

  下面的就是在@Validated的注解下作用的注解,作用在字段上

  如果数据异常则会统一抛出异常,方便异常中心统一处理

废话不多说上例子,这是将name字段限定成email格式,如果不是就抛异常

 下面是一些常见的数据集校验注解

    

原文地址:https://www.cnblogs.com/CL-King/p/14035946.html