java Spring @Value注解方法,在属性不可用时使用默认值

4urapxun  于 2023-03-21  发布在  Java
关注(0)|答案(5)|浏览(212)

情况

我正在将**.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";

我希望在这种情况下只设置普通的String“secret”。

egdjgwm8

egdjgwm81#

为了准确回答你的问题。。

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

下面还有一些变化,以使示例完整...
将字符串默认为null:

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

默认数字:

@Value("${someNumber:0}")
private int someNumber;
vfwfrxfs

vfwfrxfs2#

只需用途:

@Value("${secret:default-secret-value}")
private String ldapSecret;
ds97pgxw

ds97pgxw3#

@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;
vd8tlhqk

vd8tlhqk4#

@value(key.name:xyz)

Spring将优先从属性文件中读取值,如果不存在,则将采用默认值(这里的'xyz'是默认值)。
键(key.name)前后不应有任何空格。

ecbunoof

ecbunoof5#

实际上默认值将始终使用。为了克服这个问题,我使用一个字符串值

@Value("${prop}")
String propValue;//if no prop defined, the propValue is set to the literal "${prop}"
....
if("${prop}".equals(propValue)) {
     propValue=defaultValue
}

相关问题