返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot @Value与@ConfigurationProperties二者有哪些区别
  • 335
分享到

SpringBoot @Value与@ConfigurationProperties二者有哪些区别

Python 官方文档:入门教程 => 点击学习

摘要

@Value 和 @ConfigurationProperties 注解都能读取配置文件中的属性值并绑定到 JavaBean 中,但两者存在以下不同。 区别@Configuratio

@Value 和 @ConfigurationProperties 注解都能读取配置文件中的属性值并绑定到 JavaBean 中,但两者存在以下不同。

区别@ConfigurationProperties@Value
使用位置不同标注在 JavaBean 的类名上标注在 JavaBean 的属性上
功能不同用于批量绑定配置文件中的配置单值绑定
松散绑定(松散语法)支持部分支持
Spel不支持支持
复杂类型封装支持支持,比较繁琐
jsR303数据校验支持不支持
应用场景不同通过JavaBean获取整个配置文件单个属性值

说明

使用位置不同

  • @ConfigurationProperties:标注在 JavaBean 的类名上;
  • @Value:标注在 JavaBean 的属性上。
@Component
@Data
@ConfigurationProperties(prefix = "person")
@PropertySource("classpath:person.properties")
public class Person {
    private String firstName;
}
@Component
@Data
@PropertySource("classpath:user.properties")
public class User {
    @Value("${user.username}")
    private String username;
}

功能不同

  • @ConfigurationProperties:用于批量绑定配置文件中的配置;
  • @Value:只能一个一个的指定需要绑定的配置。

松散绑定支持不同

@ConfigurationProperties:支持松散绑定(松散语法),例如实体类 Person 中有一个属性为 firstName,那么配置文件中的属性名支持以下写法:

  • person.firstName
  • person.first-name
  • person.first_name
  • PERSON.FIRST_NAME

@Vaule:不支持松散绑定。

SpEL 支持不同

SpEL表达式:#{obj}

  • @ConfigurationProperties:不支持 SpEL 表达式;
  • @Value:支持 SpEL 表达式。
@Value("#{${girl.hobbyMap}}")
private Map<String,Object> hobbyMap;

复杂类型封装

  • @ConfigurationProperties:支持所有类型数据的封装,例如 Map、List、Set、以及对象等;
  • @Value:支持基本数据类型的封装,例如字符串、布尔值、整数等类型, 对集合Map list set配置有要求

属性校验

  • @Value不支持属性校验
  • @ConfigurationProperties 支持属性校验
@Configuration
@ConfigurationProperties(prefix = "boy")
@Data
@PropertySource("classpath:boy.properties")
@Validated
public class Boy {
    @NotNull//不为空
    private String name;
    @Min(20)//不小于20
    private int age;
}

应用场景不同

@Value 和 @ConfigurationProperties 两个注解之间,并没有明显的优劣之分,它们只是适合的应用场景不同而已。

  • 若只是获取配置文件中的某项值,则推荐使用 @Value 注解;
  • 若专门编写了一个 JavaBean 来和配置文件进行映射,则建议使用 @ConfigurationProperties 注解。

在选用时,根据实际应用场景选择合适的注解能达到事半功倍的效果。

到此这篇关于SpringBoot @Value与@ConfigurationProperties二者有哪些区别的文章就介绍到这了,更多相关springBoot @Value与@ConfigurationProperties内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot @Value与@ConfigurationProperties二者有哪些区别

本文链接: https://lsjlt.com/news/170181.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot @Value与@ConfigurationProperties二者有哪些区别
    @Value 和 @ConfigurationProperties 注解都能读取配置文件中的属性值并绑定到 JavaBean 中,但两者存在以下不同。 区别@Configuratio...
    99+
    2022-11-13
    SpringBoot @Value与@ConfigurationProperties SpringBoot @Value SpringBoot @ConfigurationProperties
  • SpringBoot中注解@ConfigurationProperties与@Value的区别与使用详解
    目录注解@ConfigurationProperties 注解@Value 区别松散语法绑定: SpEl语法表示: JSR303数据校验: 复杂类型封装: 配置文件注入值数据校验 注...
    99+
    2024-04-02
  • JavaScript中value与val的区别有哪些
    这篇文章主要介绍了JavaScript中value与val的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaScript可以做什么1.可以使网页具有交互性,例...
    99+
    2023-06-14
  • springboot和ssm的区别有哪些
    Spring Boot和SSM(SpringMVC+Spring+MyBatis)是两种不同的Java后端开发框架。1. 开发方式:...
    99+
    2023-08-30
    springboot ssm
  • docker和springboot的区别有哪些
    Docker是一个开源的容器化平台,用于将应用程序打包为可移植的容器,实现快速部署、扩展和管理。而Spring Boot是一个开源的...
    99+
    2024-04-08
    springboot docker
  • JDK1.8、JDK1.7、JDK1.6三者的区别有哪些
    这篇文章给大家介绍JDK1.8、JDK1.7、JDK1.6三者的区别有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、基本性质底层使用原生数组实现,实现RandomAccess接口,可以随机访问,随机访问指的是下...
    99+
    2023-05-30
    jdk1.8 jdk1.7 jdk1.6
  • sql与mysql有哪些区别
    什么是SQL? SQL是一种用于操作数据库的语言。SQL是用于所有数据库的基本语言。不同数据库之间存在较小的语法更改,但基本的SQL语法基本保 持不变。SQL是S tructured Q uery Language ...
    99+
    2022-05-15
    sql mysql 区别
  • pgsql与mysql有哪些区别
    这篇文章给大家分享的是有关pgsql与mysql有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。pgsql与mysql的区别有:在pgsql上的功能实现比mysql严谨,...
    99+
    2024-04-02
  • phpmyadmin与cms有哪些区别
    这篇文章给大家分享的是有关phpmyadmin与cms有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。phpmyadmin 是操作Mysql数据库的web程序,可以方便快...
    99+
    2024-04-02
  • phpmyadmin与mysql有哪些区别
    这篇文章主要介绍phpmyadmin与mysql有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!phpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机...
    99+
    2024-04-02
  • OLTP与OLAP有哪些区别
    这篇文章主要介绍“OLTP与OLAP有哪些区别”,在日常操作中,相信很多人在OLTP与OLAP有哪些区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”OLTP与OLAP有哪些...
    99+
    2024-04-02
  • sql中#与$有哪些区别
    这篇文章给大家分享的是有关sql中#与$有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在这里用到了#{},使用#时:1、用来传入参数,sq...
    99+
    2024-04-02
  • oracle与mysql有哪些区别
    小编给大家分享一下oracle与mysql有哪些区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • mysql与mongodb有哪些区别
    这篇文章主要介绍了mysql与mongodb有哪些区别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql与mongodb有哪些区别文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • php与JavaScript有哪些区别
    这篇文章主要讲解了“php与JavaScript有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php与JavaScript有哪些区别”吧! ...
    99+
    2024-04-02
  • es6与commonjs有哪些区别
    本篇内容介绍了“es6与commonjs有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • nodejs与vuejs有哪些区别
    小编给大家分享一下nodejs与vuejs有哪些区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • CNN与RNN有哪些区别
    本篇内容主要讲解“CNN与RNN有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CNN与RNN有哪些区别”吧!一、CNN与RNN对比1. CNN卷积神经...
    99+
    2024-04-02
  • python与javascript有哪些区别
    本篇内容主要讲解“python与javascript有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python与javascript有哪些区别”吧! ...
    99+
    2024-04-02
  • React与Angular有哪些区别
    这篇文章主要介绍“React与Angular有哪些区别”,在日常操作中,相信很多人在React与Angular有哪些区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Reac...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作