Spring-boot: définir la valeur par défaut pour les propriétés configurables
j'ai une classe de propriétés ci-dessous dans mon projet de démarrage.
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
private String property1;
private String property2;
// getter/setter
}
maintenant, je veux définir la valeur par défaut d'une autre propriété de mon application.fichier de propriétés pour la balise property1
. Semblable à ce que l'exemple ci-dessous fait en utilisant la valeur@
@Value("${myprefix.property1:${somepropety}}")
private String property1;
je sais que nous pouvons assigner une valeur statique comme dans l'exemple ci-dessous où "valeur par défaut" est assignée comme valeur par défaut pour property
,
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
private String property1 = "default value"; // if it's static value
private String property2;
// getter/setter
}
Comment faire avec la classe @ConfigurationProperties (plutôt typesafe propriétés de configuration) dans le démarrage de printemps où ma valeur par défaut est une autre propriété ?
2 réponses
vérifiez si property1 a été configuré en utilisant un @PostContruct dans votre classe MyProperties. Si ce n'était pas, vous pouvez l'affecter à une autre propriété.
@PostConstruct
public void init() {
if(property1==null) {
property1 = //whatever you want
}
}
Au printemps-boot 1.5.10 (et peut-être plus tôt) de fixer une valeur par défaut fonctionne que par votre manière proposée. Exemple:
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
@Value("${spring.application.name}")
protected String appName;
}
@Value
la valeur par défaut n'est utilisée que si elle n'est pas annulée dans votre propre fichier de propriétés.