时间:2021-05-19
本文主要介绍Spring @Value 注解注入属性值的使用方法的分析,文章通过示例代码非常详细地介绍,对于每个人的学习或工作都有一定的参考学习价值
在使用spring框架的项目中,@Value是经常使用的注解之一。其功能是将与配置文件中的键对应的值分配给其带注解的属性。在日常使用中,我们常用的功能相对简单。本文使您系统地了解@Value的用法。
@Value注入形式
基于配置文件的注入
首先,让我们看一下配置文件中的数据注入,无论它是默认加载的application.properties还是自定义my.properties文档(需要@PropertySource额外加载)。例如:application.properties属性值以以下形式定义:
user.name=admin
my.properties配置文件中定义的属性如下:
user.password=pwd123
然后,在bean中使用@Value,如下所示:
@PropertySource("classpath:my.properties")@RestControllerpublic class ValueController { /** *Get in application.properties Properties configured in */ @Value("${user.name}") private String name; /** *Get in my.properties Configuration properties in */ @Value("${user.password}") private String password;}区别在于,在spring boot项目中,如果使用my.properties文件,则需要通过类中的@ PropertySource导入配置文件,而application.properties中的属性将自动加载。
同时,您不仅可以通过@Value注入单个属性,还可以采用数组和列表的形式。例如,配置如下:
tools=car,train,airplane
可以通过以下方式注入它:
/** *Injection array (automatically split according to ",") */@Value("${tools}")private String[] toolArray;/** *Injection list form (automatic segmentation based on "," and) */@Value("${tools}")private List<String> toolList;默认情况下,spring将以“,”分割,并将其转换为相应的数组或列表。
基于非配置文件的注入
在使用示例说明基于非配置文件注入属性的实例之前,让我们看一下SpEl。
Spring Expression Language是Spring表达式语言,可以在运行时查询和操作数据。使用#{…}作为操作符号,大括号中的所有字符均视为SpEl。
让我们看一下特定实例场景的应用:
/** *实例化一个字符串,并赋予默认值 */@Valueprivate String wechatSubscription;/** *读取系统的环境变量 */@Value("#{systemProperties['os.name']}")private String systemPropertiesName;/** *注入表达式计算结果 */@Value("#{ T(java.lang.Math).random() * 100.0 }")private double randomNumber;/** *读取一个bean:config的tool属性并注入 */@Value("#{config.tool}")private String tool;/** *将words用“|”分隔为字符串数组 */@Value("#{'${words}'.split('\|')}")private List<String> numList;/** *注入一个文件资源 */@Value("classpath:config.xml")private Resource resourceFile;/** *注入 URL 资源 */@Value("http://")private URL homePage;上面的示例显示了以下方案的使用:
默认值注入
无论使用#{}(SpEL)还是$ {}进行属性注入,当无法获得相应的值时,都需要设置默认值,可以通过以下方式进行设置。
/** *If IP is not configured in the property, the default value is used */@Value("${ip:127.0.0.1}")private String ip;/** *If the value of port is not obtained in the system properties, 8888 is used. */@Value("#{systemProperties['port']?:'8888'}")private String port;$ {}中直接使用“:”来设置未定义或空值的默认值,而#{}则需要使用“?:”来设置未设置属性的默认值。
总结
到此这篇关于结合SpEL使用@Value-基于配置文件或非配置的文件的值注入-Spring Boot的文章就介绍到这了,更多相关Spring @Value 注解注入属性值内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1.使用Spring注解来注入属性1.1.使用注解以前我们是怎样注入属性的类的实现:classUserManagerImplimplementsUserMana
1.概览Spring的@Vaule注解提供了一种便捷的方法可以让属性值注入到组件中,当属性值不存在的时候提供一个默认值也是非常好用的这就是我们这篇文章所专注的,
在Spring容器中为一个bean配置依赖注入有三种方式:使用属性的setter方法注入这是最常用的方式;使用构造器注入;使用Filed注入(用于注解方式).F
Spring的依赖注入Spring主要支持两种依赖注入方式,分别是属性注入和构造函数注入。同时也支持工厂方法注入方式。属性注入属性注入的方式非常简单,即指通过s
一、spring依赖注入使用方式@Autowired是spring框架提供的实现依赖注入的注解,主要支持在set方法,field,构造函数中完成bean注入,注