一尘不染

Spring @Value注释方法,当属性不可用时使用默认值

spring-boot

情况

我将 .properties 文件中的属性注入到 @Value
注释的字段中。但是,此属性提供敏感的凭据,因此我将它们从存储库中删除。我仍然希望在某些情况下想要运行项目并且没有带有凭证的.properties文件,该凭证会将默认值设置为字段。

问题

即使我将默认值设置为字段本身,当.properties文件不存在时,也会出现异常:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxx': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'secret' in string value "${secret}"

这是带注释的字段:

 @Value("${secret}")
 private String ldapSecret = "secret";

我希望在这种情况下只设置纯字符串“ secret”。


阅读 719

收藏
2020-05-30

共1个答案

一尘不染

为了准确回答您的问题…

@Value("${secret:secret}")
private String ldapSecret;

为了示例的完整性,下面还有更多变化…

默认字符串为空:

@Value("${secret:#{null}}")
private String secret;

默认数字:

@Value("${someNumber:0}")
private int someNumber;
2020-05-30