SpringBoot超详细讲解@Value注解

作者:蹲街式等待 时间:2022-03-06 12:05:36 

一、非配置文件注入

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 没有对应值是,启动报错。

来源:https://blog.csdn.net/wangzhongshun/article/details/125814804

标签:SpringBoot,@Value,注解
0
投稿

猜你喜欢

  • 解决Mybatis-Plus操作分页后数据失效问题

    2023-11-25 11:31:55
  • Java面向对象编程的三大特征

    2023-09-19 06:20:34
  • Java实现调用外部程序的示例代码

    2023-11-10 06:43:12
  • Java 二分查找的实现及图例解析

    2023-10-28 11:41:57
  • mybatis使用foreach查询不出结果也不报错的问题

    2023-11-24 22:36:17
  • 阿里开源Java诊断工具神器使用及场景详解

    2023-11-06 17:24:21
  • java selenium使用浏览器调试工具实现方法

    2023-07-27 04:04:22
  • mybatis-plus中lambdaQuery()与lambdaUpdate()比较常见的使用方法总结

    2023-11-24 22:43:04
  • Java面试题冲刺第五天--基础篇2

    2023-10-07 13:17:04
  • elasticsearch分布式及数据的功能源码分析

    2023-08-11 06:31:26
  • Mybatis配置之typeAlias标签的用法

    2023-11-27 20:18:20
  • Maven的安装配置详解

    2023-11-24 08:52:05
  • C# BitArray(点矩阵)转换成int和string的方法实现

    2023-06-18 07:33:44
  • 微信小程序获取手机号,后端JAVA解密流程代码

    2023-11-29 07:57:26
  • java模拟TCP通信实现客户端上传文件到服务器端

    2023-11-26 10:14:49
  • 基于Java语言MD5加密Base64转换方法

    2023-11-24 00:22:41
  • Android实现腾讯新闻的新闻类别导航效果

    2023-07-29 04:17:46
  • java实现马踏棋盘的算法

    2023-11-29 17:00:29
  • Java Spring5学习之JdbcTemplate详解

    2023-11-25 20:17:23
  • Java如何给Word文档添加多行文字水印

    2023-11-10 07:40:58
  • asp之家 软件编程 m.aspxhome.com