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

相关文章

  • 解决MyEclipse中Maven设置jdk版本jdk1.8报错问题

    解决MyEclipse中Maven设置jdk版本jdk1.8报错问题

    今天安装了jdk1.8、tomcat8、和maven3.5.2,弄好后在myeclipse新建了一个maven项目,项目默认是jdk1.5,改成jdk1.8后项目报错
    2018-10-10
  • Jpa 实现自动更新表中的创建日期和修改时间

    Jpa 实现自动更新表中的创建日期和修改时间

    这篇文章主要介绍了Jpa 实现自动更新表中的创建日期和修改时间,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • maven scope provided和runtime的例子说明

    maven scope provided和runtime的例子说明

    这篇文章主要介绍了maven scope provided和runtime的例子说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Java使用easyExcel批量导入数据详解

    Java使用easyExcel批量导入数据详解

    这篇文章主要介绍了Java使用easyExcel批量导入数据详解,通常我们会提供一个模板,此模块我们可以使用easyExcel导出数据生成的一个Excel文件当作模板,提供下载链接,用户在该文件内填入规定的数据格式以后可以批量导入数据到数据库中,需要的朋友可以参考下
    2023-08-08
  • SpringBoot整合多个Mq服务做法详解

    SpringBoot整合多个Mq服务做法详解

    SpringBoot整合rabbitmq很容易,但是整合的目的是为了使用,那要使用rabbitmq就要对其有一定的了解,不然容易整成一团浆糊。因为说到底,SpringBoot只是在封装rabbitmq的API,让其更容易使用而已,废话不多说,让我们一起整它
    2023-02-02
  • Java 重入锁和读写锁的具体使用

    Java 重入锁和读写锁的具体使用

    这篇文章主要介绍了Java 重入锁和读写锁的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java手动配置线程池过程详解

    Java手动配置线程池过程详解

    这篇文章主要介绍了Java手动配置线程池过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • SpringMVC拦截器快速掌握下篇

    SpringMVC拦截器快速掌握下篇

    拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。本文将详细讲讲SpringMVC中拦截器的概念及入门案例,感兴趣的可以尝试一下
    2022-08-08
  • JAVA获取CLASSPATH路径的方法详解

    JAVA获取CLASSPATH路径的方法详解

    这篇文章主要介绍了Java 中获取类路径 classpath 的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Filter在springboot中的使用方法详解

    Filter在springboot中的使用方法详解

    这篇文章主要介绍了Filter在springboot中的使用方法详解,filter(过滤器)作用于在intreceptor(拦截器)之前,不像intreceptor一样依赖于springmvc框架,只需要依赖于serverlet,需要的朋友可以参考下
    2023-08-08

最新评论