spring 注释_Spring @Value注释

spring 注释

介绍:

Spring @Value批注用于将值注入变量和方法参数。 我们可以读取spring环境变量或系统变量。 它还支持SpEL。

在本快速教程中,我们将探讨如何使用Spring @Value批注。

建立:

让我们首先在app.properties文件中定义一些属性:

user.first.name=Sam
user.stocks=50
user.address=California
user.preferences=A,B,C
products.count={P1: '3', P2: '10', P3: '5'}

这些是本教程中用于示例的属性。

此外,让我们快速定义AppConfiguration类:

@Configuration
@PropertySource("classpath:app.properties")
public class AppConfiguration {...
}

Spring

我们可以使用@Value注释将默认值分配给类属性:

@Value("10")
private int value;@Value("Hello World")
private String msg;

请注意,它仅接受String参数,但是在值注入期间,传入的值将转换为适当的类型。

读取Spring环境变量:

我们可以使用@Value注释来读取Spring环境变量:

@Value("${user.first.name}")
private String userFirstName;

我们还可以读取值列表:

@Value("${user.preferences}")
private String[] userPreferences;

现在,让我们尝试使用@Value注释读取值'products.count'的 映射

@Value("#{${products.count}}")
private Map<String, Integer> productsCount;

要从地图中获取特定键的值 ,我们将使用:

@Value("#{${products.count}.P1}")
private Integer p1Count;

读取系统变量:

使用Spring @Value ,我们还可以直接读取系统变量:

@Value("${java.home}")
private String javaHome;

或使用SpEL:

@Value("#{systemProperties['java.home']}")
private String javaHome;

分配默认值:

如果我们希望在缺少属性的情况下分配默认值怎么办? 是的,我们可以使用Spring @Value批注的默认构造来做到这一点:

@Value("${user.stocks:30}")
private int stockCount;

在此,仅当属性文件中缺少属性“ user.stocks”时 ,才会将默认值30分配给stockCount

使用SpEL时,我们还可以分配一个默认值:

@Value("#{systemProperties['abc'] ?: 'default value'}")
private String unknownSystemProperty;

在方法中注入值:

除了基于字段的注入外,我们还可以在方法上使用@Value批注:

@Value("${user.first.name}")
public void setUserName(String userName) {this.userName = userName;
}

如果我们在方法上使用@Value批注,则其所有参数都将映射到相同的值。

如果要向不同的参数注入不同的参数,则可以将@Value注释与方法参数一起使用:

public void setUserDetails(@Value("${user.first.name}")String userName,@Value("${user.address}") String address) {this.userName = userName;this.address = address;
}

结论:

在本教程中,我们探讨了使用@Value注释注入属性值的不同方法。 我们可以将@Value注释与字段或方法一起使用。

翻译自: https://www.javacodegeeks.com/2019/05/spring-value-annotation.html

spring 注释

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Struts2标签学习笔记

文章目录Struts2 标签是干什么的Struts2 标签可以使用在哪里关于标签的属性常用的标签s:property调用方法s:iterator遍历Integer类型的Lists:selects:ifs:form自动填写表单项的值s:textfields:includes:submits:checkboxs:radios:action示例代码s:dates:url示例代码s:set示例代…

maven依赖范围_Maven依赖范围

maven依赖范围介绍&#xff1a; 管理依赖关系是Maven的核心功能。 定义Maven依赖项时&#xff0c; scope属性定义了该依赖项在不同的Maven生命周期阶段&#xff08;例如build&#xff0c;test和run&#xff09;上的可见性。 依赖范围限制了任何项目中依赖的传递性&#xff0c;…

雅加达poi_雅加达EE:干净的板岩

雅加达poi该公告雅加达EE不能使用javax。*名称空间是个好消息&#xff0c;并提供雅加达EE用干净的石板上构建和创新企业级Java的未来。 原始提案 可以预见&#xff0c; javax。*和jakarta。*名称空间将在Java EE 8之后共存&#xff0c;随着它的发展&#xff0c; jakarta。*名称…

Struts2的配置文件struts.xml的模板

文章目录模板标签说明packageactionresult模板 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2…

Struts2的配置文件web.xml的模板

<?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns"http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation"http://xmlns.jcp.org/xml/ns/javaee http://…

cassandra数据备份_Cassandra中的数据建模

cassandra数据备份在关系数据模型中&#xff0c;我们为域中的每个对象建模关系/表。 对于Cassandra&#xff0c;情况并非如此。本文将详细介绍在Cassandra中进行数据建模时需要考虑的所有方面。 以下是Cassandra数据建模的粗略概述。 从上图可以看出&#xff0c; 概念数据建模…

Struts2项目中的JSP如何访问Session对象

Struts2 项目中&#xff0c;Session 对象存放在 ValueStack 的 context 对象中&#xff0c;context 是 Map 对象&#xff0c;那么要从 context 对象中获取到 Session 对象&#xff0c;就要指定 key 值。我们查看 ValueStack 的内容&#xff1a; 从 ValueStack 显示的内容可以知…

pom.xml中pom全称_摆脱pom XML…几乎

pom.xml中pom全称介绍 POM文件是XML格式的文件&#xff0c;声明性地描述了要使用Maven构建的Java项目的构建结构。 维护大型Java项目的POM XML文件通常很麻烦。 XML是冗长的&#xff0c;POM的结构也需要维护冗余信息。 多次对工件进行命名是多余的&#xff0c;在groupId和artif…

IntelliJ IDEA for Mac中Maven菜单用法详解

Reload project 你如果修改了 pom.xml 文件&#xff0c;可以点击这个按钮重载 Maven 项目&#xff0c;重载过程会引入新的依赖&#xff0c;会删除不需要的依赖。 Generate Sources and Update Folders 这个按钮是将 src/main/resources 和 src/test/resources 的资源文件编译…

sql 注射_只能在测试中注射吗?

sql 注射本文是关于测试设计和可测试性的一些想法。 我们与我的儿子讨论了一些问题&#xff0c;他的儿子是Java的初级开发人员&#xff0c;目前在匈牙利的EPAM&#xff08;我工作的同一家公司&#xff0c;但在另一家公司工作&#xff09;受雇并学习。 本文中的所有内容都是很好…

IntelliJ IDEA查看方法在哪里被调用(Method Usage Search/Method Call Hierarchy)

文章目录Usage SearchCall Hierarchy区别Usage Search 搜索使用的地方&#xff0c;快捷键如下&#xff1a; 你可以把光标移到方法名称处&#xff0c;然后点击右键&#xff0c;找到 Find Usages 菜单项&#xff0c;意思是“找到使用它的地方”。 例如我要查看哪些地方调用 f…

java编程学习方法_在线学习Java编程的最佳方法

java编程学习方法1.简介 Java是使用最广泛的编程语言之一。 根据Github的最新报告 &#xff0c;Java被列为仅次于JavaScript的第二大最常用的编程语言。 掌握Java的人有很多话题。 好消息是&#xff0c;您可以在线找到很多内容。 在这篇文章中&#xff0c;我们将对所有这些主题…

hibernate 标识符_Hibernate中的标识符

hibernate 标识符Hibernate中的标识符为实体的主键属性建模。 它有助于我们唯一地标识JPA实体。 每个实体都必须定义一个标识符。 同样&#xff0c;它可以是简单的也可以是复合的。 我们可以通过几种方式定义一个Hibernate标识符。 在本教程中&#xff0c;我们将学习如何做。 …

java中延迟_Java中的延迟分配

java中延迟程序员本质上是懒惰的&#xff0c;而similis simili gaudet就像程序是懒惰的一样。 您听说过延迟加载吗&#xff1f; 还是懒惰的单身人士&#xff1f; &#xff08;不过&#xff0c;我个人更喜欢单一麦芽版本。&#xff09;如果使用Scala或Kotlin&#xff08;这也是一…

camel apache_短款Apache Camel K

camel apache您可能已经看到我们在Camel K周围的Apache Camel社区中所做的工作。 Nicola于半年前在他的博客中介绍了Camel K &#xff0c; 就在几个月前&#xff0c;我们正在讨论一个新项目&#xff0c;该项目可以作为Apache Camel的一部分启动。 一个有可能改变人们处理集成方…

java 栈 队列 接口_Java队列接口

java 栈 队列 接口介绍&#xff1a; 队列是FIFO&#xff08;先进先出&#xff09;抽象数据类型&#xff08;ADT&#xff09;。 换句话说&#xff0c;按插入顺序将元素删除。 java.util.Queue是Java 中的接口&#xff0c;并且从java.util.Collection扩展。 一些常用的Queue实现…

jakarta ee_Jakarta EE 8状态

jakarta ee遵循Jakarta EE的人们可能知道即将发布的Jakarta EE 8在功能上将与Java EE 8等效。其原因是我们想证明从Oracle的传输已经完成&#xff0c;并且我们能够产生这些流程&#xff0c;规范&#xff0c;测试套件以及通过Eclipse Foundation的兼容实现。 到目前为止&#x…

IntelliJ IDEA如何查看接口的实现类以及如何查看被实现的接口

在接口的左边有个向下的小箭头&#xff0c;点击小箭头就能看到接口的实现类和方法的实现&#xff1a; 在实现类的左边有个向上的小箭头&#xff0c;可以查看被实现的接口和被覆盖重写的方法&#xff1a;

c#自定义控件资源释放问题_定义资源

c#自定义控件资源释放问题在Fielding的论文中 &#xff0c;资源描述为&#xff1a; “可以命名的任何信息”……“文档或图像&#xff0c;临时服务&#xff08;例如&#xff0c;“洛杉矶今天的天气”&#xff09;&#xff0c;其他资源的集合&#xff0c;非虚拟对象&#xff08…

MySQL数据库存入日期(java.sql.Date)数据,天数会少一天的问题

网络上给的解决办法&#xff1a; 这是数据库服务器时区的问题&#xff0c;即连接参数 serverTimezone 的问题&#xff0c;默认情况下 serverTimezoneUTC&#xff0c;改成 HongKong 或者 Asia/Shanghai 就可以了。如下所示&#xff1a; jdbc:mysql://localhost:3306/test?useU…