情况
我正在将.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";在这种情况下,我预计只会设置简单的字符串“机密”。
发布于 2017-04-05 19:29:11
准确地回答你的问题。
@Value("${secret:secret}")
private String ldapSecret;为了确保这些例子的完整性,下面还有几个变体。
默认字符串为null:
@Value("${secret:#{null}}")
private String secret;默认一个数字:
@Value("${someNumber:0}")
private int someNumber;发布于 2017-04-05 18:55:47
只需使用:
@Value("${secret:default-secret-value}")
private String ldapSecret;发布于 2017-04-05 19:32:14
@Value and Property Examples
To set a default value for property placeholder :
${property:default value}
Few examples :
//@PropertySource("classpath:/config.properties}")
//@Configuration
@Value("${mongodb.url:127.0.0.1}")
private String mongodbUrl;
@Value("#{'${mongodb.url:172.0.0.1}'}")
private String mongodbUrl;
@Value("#{config['mongodb.url']?:'127.0.0.1'}")
private String mongodbUrl;https://stackoverflow.com/questions/43238583
复制相似问题