一尘不染

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

java

情况

我将 .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”。


阅读 246

收藏
2020-12-03

共1个答案

一尘不染

为了准确回答您的问题…

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

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

默认字符串为空:

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

默认数字:

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