La configuration de nuage de printemps contient une fonctionnalité nommée 'RefreshScope' qui permet d'actualiser les propriétés et les beans d'une application en cours d'exécution. Si vous avez lu à propos de la configuration du cloud de printemps, il semble qu'il ne peut charger que les propriétés d'un dépôt git, mais ce n'est pas vrai.
Vous pouvez utiliser RefreshScope pour recharger des propriétés à partir d'un fichier local sans avoir besoin de se connecter à un référentiel git externe ou à des requêtes HTTP.
Créez un fichier bootstrap.properties
avec ce contenu:
# false: spring cloud config will not try to connect to a git repository
spring.cloud.config.enabled=false
# let the location point to the file with the reloadable properties
reloadable-properties.location=file:/config/defaults/reloadable.properties
Créer un fichier reloadable.properties
à l'endroit que vous avez défini ci-dessus. Vous pouvez le laisser vide ou ajouter des propriétés. Dans ce fichier, vous pouvez ultérieurement, lors de l'exécution, modifier ou ajouter des propriétés.
Ajouter une dépendance à
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
Tous les haricots, qui utilisent des propriétés, qui peuvent être modifiées lors de l'exécution, devrait être annotés avec @RefreshScope
comme ceci:
@Bean
@RefreshScope
Controller controller() {
return new Controller();
}
Créer une classe
public class ReloadablePropertySourceLocator implements PropertySourceLocator
{
private final String location;
public ReloadablePropertySourceLocator(
@Value("${reloadable-properties.location}") String location) {
this.location = location;
}
/**
* must create a new instance of the property source on every call
*/
@Override
public PropertySource<?> locate(Environment environment) {
try {
return new ResourcePropertySource(location);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
Configurer le printemps à bootstrap the configuration en utilisant cette classe .
Créer (ou prolonger) le fichier META-INF/spring.factories
dans votre dossier de ressources:
org.springframework.cloud.bootstrap.BootstrapConfiguration=your.package.ReloadablePropertySourceLocator
Ce haricot lira les propriétés du reloadable.properties
. Spring Cloud Config le rechargera à partir du disque, lorsque vous actualisez l'application.
Ajoutez l'exécution, modifiez reloadable.properties
comme vous le souhaitez, puis actualisez le contexte de printemps. Vous pouvez le faire en envoyant une requête POST à l'extrémité /refresh
ou en Java en utilisant ContextRefresher
:
@Autowired
ContextRefresher contextRefresher;
...
contextRefresher.refresh();
Cela devrait également fonctionner, si vous choisissez d'utiliser en parallèle aux propriétés d'un dépôt git à distance.
regardez cette réponse http://stackoverflow.com/questions/37873433/spring-cloud-config-server-rabbitmq/37873783#37873783 –
Copie possible de [Spring Cloud Config Server + RabbitMQ] (http: // stackoverflow .com/questions/37873433/spring-cloud-config-server-rabbitmq) – Raz0rwire
Nope sa différente question –