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格式,如果不是就抛异常

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

        

  • 相关阅读:
    Hibernate:组合模式解决树的映射
    以面到点的学习MFC
    linux内核--进程与线程
    控件自定义
    火车车次查询-余票查询--Api接口
    如何处理大量数据并发操作(数据库锁机制详解)
    Java单链表、双端链表、有序链表实现
    事务、数据库事务、事务隔离级别、锁的简单总结
    数据库连接池分析
    Spring面试题集
  • 原文地址:https://www.cnblogs.com/CL-King/p/14035946.html
Copyright © 2011-2022 走看看