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é ?

17
demandé sur Ashvin Kanani 2015-06-17 07:49:47

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
        }
    }
7
répondu jst 2015-06-17 16:32:34

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.

3
répondu Andy Brown 2018-05-01 13:43:06