有没有做软件的外包网站,wordpress发帖,wordpress seo插件哪个好,中国农业工程建设协会网站SpringBoot中Value获取值和ConfigurationProperties获取值用法及比较 更新时间#xff1a;2024年08月08日 09:41:48 作者#xff1a;岳轩子 在Spring Boot中,Value注解是一个非常有用的特性,它允许我们将外部的配置注入到我们的Bean中,ConfigurationProperties用于将配置文件…SpringBoot中Value获取值和ConfigurationProperties获取值用法及比较 更新时间2024年08月08日 09:41:48 作者岳轩子 在Spring Boot中,Value注解是一个非常有用的特性,它允许我们将外部的配置注入到我们的Bean中,ConfigurationProperties用于将配置文件中的属性绑定到 Java Bean 上,本文介绍了Value获取值和ConfigurationProperties获取值用法及比较,需要的朋友可以参考下
简介
1.1 value 在Spring Boot中Value注解是一个非常有用的特性它允许我们将外部的配置如application.properties或application.yml文件中的属性注入到我们的Bean中。这对于读取配置信息如数据库连接信息、服务地址等非常有用。
基本用法
Value注解可以应用于字段、setter方法或配置方法上。它使用SpELSpring Expression Language表达式来读取配置值。
1.2 ConfigurationProperties ConfigurationProperties 是 Spring Boot 提供的一个非常强大的注解用于将配置文件中的属性绑定到 Java Bean 上。与 Value 注解相比ConfigurationProperties 提供了更丰富的特性比如松散绑定relaxed binding、JSR-303 数据校验以及复杂的类型绑定等。
基本用法
定义一个配置类首先你需要定义一个配置类并使用 ConfigurationProperties 注解来指定配置的前缀。 启用配置属性绑定默认情况下Spring Boot 会自动扫描带有 ConfigurationProperties 注解的类并将它们注册为 Spring 应用上下文中的 bean。但是如果你想要精确地控制哪些配置类被注册你可以在 EnableConfigurationProperties 注解中指定它们。 在配置文件中设置属性在 application.properties 或 application.yml 文件中设置与配置类属性相对应的配置项。
使用
2.1 value的使用 首先创建springboot的项目
创建application.yml
person:name : 岳轩子sex : 雄age : 18birthday : 2002/2/31maps : { k1 : 20 , k2 : 21}lists : [小黄 , 小黑]dog:name : 旺财
创建Person.java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;import java.util.Date;
import java.util.List;
import java.util.Map;Component
Validated
public class Person {Value(${person.name})private String name;Value(${person.sex})private Character sex;Value(${person.age})private Integer age;Value(${person.birthday})private Date birthday;private MapString, Integer maps;private ListString lists;private Dog dog;public String getName() {return name;}public void setName(String name) {this.name name;}public Character getSex() {return sex;}public void setSex(Character sex) {this.sex sex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday birthday;}public MapString, Integer getMaps() {return maps;}public void setMaps(MapString, Integer maps) {this.maps maps;}public ListString getLists() {return lists;}public void setLists(ListString lists) {this.lists lists;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog dog;}Overridepublic String toString() {return Person{ name name \ , sex sex , age age , birthday birthday , maps maps , lists lists , dog dog };}
}
2.2 ConfigurationProperties的用法 创建Person2.java
package com.example.springbootdaily.model;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;import java.util.Date;
import java.util.List;
import java.util.Map;Component
ConfigurationProperties(prefix person)
Validated
public class Person2 {private String name;private Character sex;private Integer age;private Date birthday;private MapString, Integer maps;private ListString lists;private Dog dog;public String getName() {return name;}public void setName(String name) {this.name name;}public Character getSex() {return sex;}public void setSex(Character sex) {this.sex sex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday birthday;}public MapString, Integer getMaps() {return maps;}public void setMaps(MapString, Integer maps) {this.maps maps;}public ListString getLists() {return lists;}public void setLists(ListString lists) {this.lists lists;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog dog;}Overridepublic String toString() {return Person{ name name \ , sex sex , age age , birthday birthday , maps maps , lists lists , dog dog };}
}
区别
3.1 松散绑定 ConfigurationProperties 的松散绑定relaxed binding是 Spring Boot 提供的一个特性它允许你在配置文件中使用不同的命名风格如驼峰命名、短横线分隔等而 Spring Boot 能够自动地将其映射到 Java Bean 的属性上。这种特性使得配置文件的编写更加灵活同时也使得 Java Bean 的属性命名更加符合 Java 的命名习惯。
松散绑定的工作原理 当你使用 ConfigurationProperties 注解来绑定配置文件中的属性时Spring Boot 会尝试根据以下规则来匹配属性名
驼峰命名与短横线分隔的互转如果你的 Java Bean 属性使用驼峰命名如 myProperty那么你可以在配置文件中使用短横线分隔的形式如 my-property来设置这个属性的值。Spring Boot 会自动地将这两种命名风格进行转换。 忽略大小写在松散绑定中大小写通常会被忽略但请注意这取决于你使用的配置文件格式如 YAML 是大小写敏感的而 properties 文件则不是。然而即使对于大小写敏感的文件格式Spring Boot 也会尝试以智能的方式匹配属性名。 环境变量对于环境变量松散绑定的规则也适用。通常环境变量名使用大写字母和下划线如 MY_PROPERTY而 Java Bean 属性则使用驼峰命名。Spring Boot 能够处理这种差异。 例子
application.yml 这里的name中间加了一个线
person:na-me : 岳轩子sex : 雄age : 18birthday : 2002/2/31maps : { k1 : 20 , k2 : 21}lists : [小黄 , 小黑]dog:name : 旺财
仍然可以获取 运行结果
Person{name‘岳轩子’, 3.2 SpEL SpELSpring Expression Language是 Spring 框架中的一个功能强大的表达式语言它支持在运行时查询和操作对象图。SpEL 是一种类似于 JSP ELJavaServer Pages Expression Language但功能更强大的表达式语言它用于在运行时查询和操作数据。
主要用途
Bean 属性的动态访问在 Spring 配置文件中你可以使用 SpEL 来动态地访问和设置 Bean 的属性。 注解中的属性值在 Spring 的注解中你也可以使用 SpEL 来设置注解的属性值。 XML 配置中的属性值在 Spring 的 XML 配置文件中可以通过 标签的 value 或 ref 属性结合 SpEL 来设置属性值。 Value 注解在 Java 代码中可以使用 Value 注解结合 SpEL 来注入配置值或计算结果。
特点
功能强大支持基本运算、关系运算、逻辑运算、正则表达式匹配、集合操作等。 易于使用语法简洁易于学习和使用。 集成性好与 Spring 框架紧密结合可以在 Spring 的各种场景中使用。
例子 运行结果
age20,
3.3 JSP303数据校验 先导入依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId
/dependency这里是Value不支持
Email
Value(${person.name})
private String name;如果不是email的话会报错 3.4 复杂类型封装 前面已经使用了Value不能封装maplist和对象类型 但是ConfigurationProperties可以
以上就是SpringBoot中Value获取值和ConfigurationProperties获取值用法及比较的详细内容更多关于Value和ConfigurationProperties比较的资料请关注脚本之家其它相关文章
来源 https://www.jb51.net/program/325543kt3.htm