ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ConfigurationProperties和Value

2022-08-05 13:04:47  阅读:137  来源: 互联网

标签:name 配置文件 JSR303 Value person ConfigurationProperties


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

标签:name,配置文件,JSR303,Value,person,ConfigurationProperties
来源: https://www.cnblogs.com/sunny3158/p/16553910.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有