SpringBoot超详细讲解@Value注解

 更新时间:2022年07月18日 10:48:10   作者:蹲街式等待  
在使用spring框架的项目中,@Value是经常使用的注解之一。作用是将配置文件中的键对应的值分配给某类内带注解的属性。本文使您系统地了解@Value的用法。在使用Spring框架的项目中@Value是经常使用的注解之一,其作用是将配置文件中的键对应的值分配给某类内带注解的属性

一、非配置文件注入

1、注入普通字符串

直接附在属性名上,在 Bean 初始化时,会赋初始值。

@Value("admin")
private String name;

2、注入JAVA系统变量

@Value("#{systemProperties['os.name']}")
private String osName;

这里的 osName 是 JAVA 的 System.getProperties() 方法获取的JAVA环境变量 ,查看java系统变量的方法如下:

public String getproperties() {
	//获取所有的属性
    Properties properties = System.getProperties();
    //为了看看系统的属性有几个,加了一个计数器
    //遍历所有的属性
    for (String key : properties.stringPropertyNames()) {
        System.out.println(key + "=" + properties.getProperty(key));
    }
    return null;
}

3、注入表达式

@Value("#{ T(java.lang.Math).random() * 100.0 }")
private double randomNumber;

注:#{} 中写表达式。

4、注入其他Bean属性

注入 beanInject 对象的属性 another

@Value("#{beanInject.another}")
private String fromAnotherBean;

5、注入文件资源

@Value("classpath:com/hry/spring/configinject/config.txt")
private Resource resourceFile;

6、注入URL资源

@Value("http://www.baidu.com")
private Resource testUrl;

二、通过配置文件注入

SpringBoot 通过 @Value 注解将配置文件中的属性注入到容器内组件中(可用在 @Controller@Service@Configuration@Component 等Spring托管的类中)

1、注入普通字符串

application.properties 配置文件中有如下配置:

name=admin

@Value 注入属性:

@Value("${name}")
public String name;

此时,name 的值为 admin

当配置文件中 name= 空时,此时name属性的值为 ""

我们可以为注入属性设置默认值:

@Value("${name:admin}")
public String name;

2、注入基本类型

application.properties 配置文件中有如下配置:

port=8888
open=true
score=90.1

@Value 注入属性:

@Value("${port:1111}")
private int port;
@Value("${open:true}")
private boolean open;
@Value("${score:100}")
private double score;

3、注入数组类型

application.properties 配置文件中有如下配置:

ids=1,2,3

@Value 注入属性:

@Value("${ids}")
public int[] arrIds;

注:当配置文件中 ids 没有对应值时,数组 arrIds非null空数组,长度为 0

4、注入List类型

application.properties 配置文件中有如下配置:

ids=1,2,3

@Value 注入属性:

@Value("#{'${ids}'.split(',')}")
public List<String> listIds;

注:当配置文件中 ids 没有对应值时,集合 listIds 长度为 1 ,存在值为:""

5、注入Map类型

application.properties 配置文件中有如下配置:

user="{name:'admin', age:'23'}"

@Value 注入属性:

@Value("#{${user}}")
public Map<String, String> userMap;

#{} 表示使用 SpEL表达式

注:当配置文件中 user 没有对应值是,启动报错。

到此这篇关于SpringBoot超详细讲解@Value注解的文章就介绍到这了,更多相关SpringBoot @Value注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 简单易懂讲解happens-before原则

    简单易懂讲解happens-before原则

    Java内存模型中的happens-before是什么?为什么会有这东西的存在?一个新东西肯定是上手先,但是等我们空下来回过头来,我们还是需要去理解这些知识,只有这样我才能深刻的记住,并且运用熟练。下来和小编来一起学习下
    2019-05-05
  • 史上最全面的Spring Boot配置文件深入讲解

    史上最全面的Spring Boot配置文件深入讲解

    Springboot极大的简化了Spring框架的使用配置流程,在核心配置文件里,几乎可以完成所有的配置工作,下面这篇文章主要给大家介绍了关于Spring Boot配置文件的相关资料,文中介绍的非常全面,需要的朋友可以参考下
    2018-12-12
  • Java并发编程之Fork/Join框架详解

    Java并发编程之Fork/Join框架详解

    这篇文章主要介绍了Java并发编程之Fork/Join框架详解,Fork/Join框架是Java7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架,需要的朋友可以参考下
    2023-12-12
  • 如何使用ThreadLocal上下文解决查询性能问题

    如何使用ThreadLocal上下文解决查询性能问题

    这篇文章主要介绍了利用ThreadLocal上下文解决查询性能问题,有两种解决方案,一种是使用ThreadLocal上下文,另一种是使用Redis缓存,需要的朋友可以参考下
    2023-07-07
  • 基于springboot实现数据可视化的示例代码

    基于springboot实现数据可视化的示例代码

    本文主要介绍了基于springboot实现数据可视化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
    2022-07-07
  • Spring Boot详解配置文件的用途与用法

    Spring Boot详解配置文件的用途与用法

    SpringBoot项目是一个标准的Maven项目,它的配置文件需要放在src/main/resources/下,其文件名必须为application,其存在两种文件形式,分别是properties和yaml(或者yml)文件
    2022-06-06
  • java实现的顺时针/逆时针打印矩阵操作示例

    java实现的顺时针/逆时针打印矩阵操作示例

    这篇文章主要介绍了java实现的顺时针/逆时针打印矩阵操作,涉及java基于数组的矩阵存储、遍历、打印输出等相关操作技巧,需要的朋友可以参考下
    2019-12-12
  • idea如何自定义代码模板

    idea如何自定义代码模板

    这篇文章主要介绍了idea如何自定义代码模板问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Maven本地jar引用的实现方法

    Maven本地jar引用的实现方法

    这篇文章主要介绍了Maven本地jar引用的实现方法的相关资料,希望通过本文能帮助到大家,实现这样的功能,需要的朋友可以参考下
    2017-10-10
  • java虚拟机中多线程总结

    java虚拟机中多线程总结

    在本篇内容中小编给大家分享的是关于java虚拟机中多线程的知识点总结内容,需要的朋友们参考学习下。
    2019-06-06

最新评论