Spring @Value注释

介绍:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值