java - actuator - Spring-boot: establece el valor por defecto en propiedades configurables
spring environments (2)
Tengo una clase de propiedades a continuación en mi proyecto de arranque de primavera.
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
private String property1;
private String property2;
// getter/setter
}
Ahora, quiero establecer el valor predeterminado en alguna otra propiedad en mi archivo application.properties para property1
. Similar a lo que hace el ejemplo siguiente usando @Value
@Value("${myprefix.property1:${somepropety}}")
private String property1;
Sé que podemos asignar un valor estático como en el ejemplo a continuación donde "valor predeterminado" se asigna como valor predeterminado para la property
,
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
private String property1 = "default value"; // if it''s static value
private String property2;
// getter/setter
}
¿Cómo hacer esto usando la clase @ConfigurationProperties (en lugar de propiedades de configuración de tipos seguros) en el arranque de primavera, donde mi valor predeterminado es otra propiedad?
En spring-boot 1.5.10 (y posiblemente antes), la configuración de un valor predeterminado funciona de acuerdo con la forma sugerida. Ejemplo:
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
@Value("${spring.application.name}")
protected String appName;
}
El @Value
predeterminado de @Value
solo se usa si no se invalida en su propio archivo de propiedades.
Verifique si property1 se configuró usando un @PostContruct en su clase MyProperties. Si no fuera así, puedes asignarlo a otra propiedad.
@PostConstruct
public void init() {
if(property1==null) {
property1 = //whatever you want
}
}