Je suis l'approche décrite ici: https://github.com/jeroenbellen/blog-manage-and-reload-spring-properties , la seule différence est que dans mon cas, les propriétés sont en cours utilisé dans plusieurs classes, donc je les ai tous mis dans une seule classe utilitaire CloudConfig
et je me réfère à ses variables en utilisant les getters. Voici à quoi ressemble la classe:
@Configuration
@RefreshScope
public class CloudConfig {
static volatile int count; // 20 sec
@Value("${config.count}")
public void setCount(int count) {
this.count = count;
}
public static int getCount() {
return count;
}
}
et j'utilise la variable count
dans d'autres classes comme CloudConfig.getCount()
. Je peux très bien charger les propriétés au démarrage mais je ne suis pas en mesure de les mettre à jour dynamiquement à la volée. Quelqu'un peut-il dire ce que je fais mal? Si au lieu de faire cette classe de configuration, je fais exactement ce que le didacticiel décrit, tout fonctionne bien mais j'ai du mal à l'adapter à mon cas d'utilisation. Quelqu'un peut-il dire ce qui me manque?
Toute personne confrontée à ce problème, veuillez vous assurer que les points suivants:
@RefreshScope
L'actionneur de démarrage à ressort est ajouté à votre dépendance, car c'est le module qui fournit réellement ces points de terminaison:
org.springframework.boot ressort-démarrage-démarreur-actionneur
Actualiser le point de terminaison a été mis à jour pour:
http: // {adresse_ip}: {port}/actuator/refresh
L'actualisation du point de terminaison n'est pas activée par défaut. Vous devez l'activer explicitement dans le fichier bootstrap.properties en ajoutant la ligne suivante:
management.endpoints.web.exposure.include=*
J'ai activé tous les points de terminaison, tandis que vous pouvez également activer les points de terminaison spécifiques.