sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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
posted on   sunny123456  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-08-05 js 三个input输入框,组合查询。
2021-08-05 Vue.js组件教程 https://www.jb51.net/Special/926.htm
2021-08-05 vue.js实战教程 https://www.jb51.net/Special/978.htm
2021-08-05 原生JS实现多条件筛选
2021-08-05 php结合js实现多条件组合查询
2021-08-05 js前端 多条件筛选查询
2021-08-05 JS 判断字符串是否全部为数字
点击右上角即可分享
微信分享提示