Estoy inyectando propiedades del archivo .properties en campos anotados con @Value . Sin embargo, estas propiedades presentan credenciales confidenciales, por lo que las elimino del repositorio. Todavía quiero que, en caso de que alguien quiera ejecutar un proyecto y no tenga un archivo .properties con credenciales, los valores predeterminados se establecerán en los campos.
Incluso si configuro valores predeterminados para el campo en sí, obtengo una excepción cuando el archivo .properties no está presente:
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}"Aquí está el campo anotado:
@Value("${secret}") private String ldapSecret = "secret";Esperaba que en este caso simplemente se estableciera String "secret".
Para responder exactamente a tu pregunta...
@Value("${secret:secret}") private String ldapSecret;Y algunas variaciones más están a continuación para completar los ejemplos...
Por defecto una cadena a nulo:
@Value("${secret:#{null}}") private String secret;Por defecto un número:
@Value("${someNumber:0}") private int someNumber;Solo usa:
@Value("${secret:default-secret-value}") private String ldapSecret;@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;