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注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot2.0 配置时间格式化不生效问题的解决

    springboot2.0 配置时间格式化不生效问题的解决

    这篇文章主要介绍了springboot2.0 配置时间格式化不生效问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java数据结构之稀疏矩阵定义与用法示例

    Java数据结构之稀疏矩阵定义与用法示例

    这篇文章主要介绍了Java数据结构之稀疏矩阵定义与用法,结合实例形式分析了java稀疏矩阵的定义、运算、转换等相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • 使用SpringBoot动态切换数据源的实现方式

    使用SpringBoot动态切换数据源的实现方式

    在我们企业项目开发的过程中,有的时候,一个项目需要在运行时,根据某种条件选择使用哪个数据源,那么此时该怎么进行动态切换呢,本文给大家例举一种常见的实现方式,文中有详细的实现步骤,需要的朋友可以参考下
    2023-12-12
  • 浅谈Java中的hashcode方法(推荐)

    浅谈Java中的hashcode方法(推荐)

    本篇文章主要介绍了Java中的hashcode方法,详细的介绍了hashCode方法的作用,具有一定的参考价值,有需要的可以了解一下。
    2016-12-12
  • SpringCloud通过Feign传递List类型参数方式

    SpringCloud通过Feign传递List类型参数方式

    这篇文章主要介绍了SpringCloud通过Feign传递List类型参数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java中的双重检查(Double-Check)详解

    Java中的双重检查(Double-Check)详解

    这篇文章主要为大家详细介绍了Java中的双重检查(Double-Check),感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Springboot项目启动到一半卡住了,不报错问题及解决

    Springboot项目启动到一半卡住了,不报错问题及解决

    这篇文章主要介绍了Springboot项目启动到一半卡住了,不报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • SpringBoot整合flyway实现步骤解析

    SpringBoot整合flyway实现步骤解析

    这篇文章主要介绍了SpringBoot整合flyway实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Spring计划任务用法实例详解

    Spring计划任务用法实例详解

    这篇文章主要介绍了Spring计划任务用法,结合实例形式详细分析了spring计划任务相关原理、配置、使用方法及操作注意事项,需要的朋友可以参考下
    2019-11-11
  • Spring boot 默认静态资源路径与手动配置访问路径的方法

    Spring boot 默认静态资源路径与手动配置访问路径的方法

    这篇文章主要介绍了Spring boot 默认静态资源路径与手动配置访问路径的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-05-05

最新评论