zoukankan      html  css  js  c++  java
  • 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格式,如果不是就抛异常

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

        

  • 相关阅读:
    CentOS挂载ntfs
    搬水果
    CentOS安装完显卡启动进不去系统
    二叉树遍历
    拓展的异常类
    Visual Studio 2008 IDE 出现 “帮助更新正在进行”错误的解决办法
    JSON工具SuperObject编译时"整数溢出"异常的解决办法
    引用命名区域
    ruby操作excel的几段代码
    Delphi2009&2007中,测试工程的初级使用(DUnit)
  • 原文地址:https://www.cnblogs.com/CL-King/p/14035946.html
Copyright © 2011-2022 走看看