• ConfigurationProperties和Value


    ConfigurationProperties和Value
    https://blog.csdn.net/qq_45678953/article/details/117266855

    SpringBoot之ConfigurationProperties和Value注解的区别

    1.@ConfigurationProperties和@Value获取值的比较
    @ConfigurationProperties@Value
    功能批量注入配置文件中的属性一个个指定
    松散绑定(松散语法)支持不支持
    SpEL不支持支持
    JSR303支持不支持
    复杂类型封装支持不支持

    无论使用@ConfigurationProperties还是@Value都可以获取到值

    如果说, 我们只是在某个业务逻辑中需要获取一下配置文件中某项的值, 使用@Value

    如果说, 我们专门编写了一个JavaBean来和配置文件进行映射, 我们就直接使用@ConfigurationProperties

    解释
    • 松散绑定(松散语法)

      例如如下Javabean属性

      private String lastName;
      
      • 1

      使用@ConfigurationProperties注解时配置文件中与之绑定的属性名可以为 lastName 或 last_name 或 last-name 或 LASTNAME 或 LAST_NAME 或 LAST-NAME, 但是使用@Value时必须明确指定配置文件中与之绑定的属性名

      @Value("${person.last-name}")
      private String lastName;
      
      • 1
      • 2
    • SpEL

      @Value给Javabean属性绑定属性值时可以使用SpEL语法, 但是@ConfigurationProperties不能使用

      @Value("#{10*12}")
      private Integer id;
      
      • 1
      • 2
    • JSR303

      使用@ConfigurationProperties可以使用JSR303数据校验, 但是@Value不可以

      @Component
      @Validated
      public class Person {
          @Email
          private String name;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 关于使用JSR303数据校验

        1. 导入spring-boot-starter-validation依赖

          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-validation</artifactId>
          </dependency>
          
          • 1
          • 2
          • 3
          • 4
        2. 在需要使用JSR303数据校验的类上添加@Validated注解

        3. 在需要JSR303数据校验的地方添加JSR303数据校验注解

    • 复杂类型封装

      使用@ConfigurationProperties时, 在配置文件中配置的任何类型元数据均可以绑定到Javabean属性, 但是@Value只能绑定到配置文件中的基本数据类型数据

      @Value("男")
      private String gender;
      @Value("${person.last-name}")
      private String lastName;
      
      • 1
      • 2
      • 3
      • 4
      person.id=20
      person.name=ml
      person.gender=男
      person.age=20
      person.boss=false
      person.birth=2000/10/05
      person.pets=dog,cat,pig
      person.map.1=周一
      person.map.2=周二
      person.map.3=周三
      person.dog.name=狗子
      person.dog.gender=大漂亮
      person.dog.age=2
      person.LASTNAME=哈哈哈哈
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
  • 相关阅读:
    git——学习笔记(一)
    技术大牛的博客//文档
    python——周边
    数据挖掘算法:关联分析二(Apriori)
    数据挖掘算法:关联分析一(基本概念)
    Python入门5(pandas中merge中的参数how)
    Spark入门3(累加器和广播变量)
    Spark入门2(Spark简析)
    Spark入门1(以WordCount为例讲解flatmap和map之间的区别)
    算法入门1(决策树)
  • 原文地址:https://www.cnblogs.com/sunny3158/p/16553910.html
Copyright © 2020-2023  润新知