[JAVA] Comment modifier la valeur de paramètre de application.properties au moment du démarrage dans Spring Boot

L'influence de la nouvelle Corona commence progressivement à apparaître sur le lieu de travail, et je suis ravi si j'arrête de travailler.

Pendant ce temps, j'en étais accro pour la première fois depuis longtemps, alors j'ai décidé de l'enregistrer. De plus, si vous pouvez le comprendre, c'est une histoire très simple et elle est assez cabossée. Il est peut-être trop rudimentaire pour les passionnés de Java de publier sur le Web. ..

Chose que tu veux faire

8h pour une chose aussi simple.

Points addictifs

Reproduction d'événements

https://github.com/t-o-z/configuration-demo

Mettre en place selon Readme,

docker run config-demo

Ensuite, il est inclus dans application.properties

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.4.RELEASE)

2020-02-27 09:51:15.557  INFO 7 --- [           main] c.z.c.ConfigurationDemoApplication       : Starting ConfigurationDemoApplication v0.0.1-SNAPSHOT on 6c889b4a8ada with PID 7 (/usr/src/myapp/configuration-demo-0.0.1-SNAPSHOT.jar started by root in /usr/src/myapp)
2020-02-27 09:51:15.566  INFO 7 --- [           main] c.z.c.ConfigurationDemoApplication       : No active profile set, falling back to default profiles: default
2020-02-27 09:51:16.918  INFO 7 --- [           main] c.z.c.ConfigurationDemoApplication       : Started ConfigurationDemoApplication in 2.482 seconds (JVM running for 3.809)
key1-value

Est affiché.

Appliquer application.properties sous les classes

sample.key1=key1-value1

Même si vous le réécrivez et l'exécutez à nouveau

user:configuration-demo user$ docker run config-demo

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.4.RELEASE)

2020-02-27 09:58:45.004  INFO 6 --- [           main] c.z.c.ConfigurationDemoApplication       : Starting ConfigurationDemoApplication v0.0.1-SNAPSHOT on 9999dad12dac with PID 6 (/usr/src/myapp/configuration-demo-0.0.1-SNAPSHOT.jar started by root in /usr/src/myapp)
2020-02-27 09:58:45.014  INFO 6 --- [           main] c.z.c.ConfigurationDemoApplication       : No active profile set, falling back to default profiles: default
2020-02-27 09:58:46.425  INFO 6 --- [           main] c.z.c.ConfigurationDemoApplication       : Started ConfigurationDemoApplication in 2.564 seconds (JVM running for 3.881)
key1-value

Cela ne sera pas reflété. ..

J'ai essayé diverses choses.

Même si vous vérifiez les contre-mesures

Il y a différentes choses comme ça, mais est-il possible de le faire avec un seul fichier? Je n'avais pas beaucoup d'informations. Le dernier Hot Reload consiste à configurer un serveur uniquement pour ce faire.

Conclusion

** Copier dans / config! ** **

Je l'ai déjà rendu audacieux après essais et erreurs,

classes/config

Ce n'est pas bon.

/config

Créez-en un nouveau et placez-y classes / application.properties.

target 2020-02-27 19-21-35.png
sample.key1=modify

Et démarrez Docker (la reconstruction est nécessaire car c'est COPY).

Otsuka:configuration-demo otsukatakuya$ docker run config-demo

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.4.RELEASE)

2020-02-27 10:54:32.393  INFO 6 --- [           main] c.z.c.ConfigurationDemoApplication       : Starting ConfigurationDemoApplication v0.0.1-SNAPSHOT on c43d6b28259a with PID 6 (/usr/src/myapp/configuration-demo-0.0.1-SNAPSHOT.jar started by root in /usr/src/myapp)
2020-02-27 10:54:32.403  INFO 6 --- [           main] c.z.c.ConfigurationDemoApplication       : No active profile set, falling back to default profiles: default
2020-02-27 10:54:33.804  INFO 6 --- [           main] c.z.c.ConfigurationDemoApplication       : Started ConfigurationDemoApplication in 2.474 seconds (JVM running for 3.59)
modify

Où est-il écrit?

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config

Il a été mentionné dans la référence officielle de Spring boot.

SpringApplication loads properties from application.properties files in the following locations and adds them to the Spring Environment:

  1. A /config subdirectory of the current directory
  1. The current directory
  1. A classpath /config package
  1. The classpath root

The list is ordered by precedence (properties defined in locations higher in the list override those defined in lower locations).

J'avais l'intention d'essayer 1, mais je n'ai pas pu essayer 3 en premier. .. Peut-être que le chemin de classe est inclus dans le fichier jar et sera en conflit avec lui?

Certaines personnes ont suggéré un moyen d'écrire des exclusions dans pom.xml et de ne pas les inclure dans la construction, mais tout ce que vous avez à faire est de les ajouter! J'ai beaucoup appris car il n'y avait pas beaucoup d'articles écrits de manière concise.

Recommended Posts

Comment modifier la valeur de paramètre de application.properties au moment du démarrage dans Spring Boot
Modifier le délai d'expiration de la session dans Spring Boot
Comment ajouter un chemin de classe dans Spring Boot
Comment se lier avec un fichier de propriétés dans Spring Boot
Spring Boot - Comment définir le délai d'expiration de la session
Comment créer un projet Spring Boot dans IntelliJ
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Comment configurer Spring Boot + PostgreSQL
Comment appeler et utiliser l'API en Java (Spring Boot)
Comment utiliser ModelMapper (Spring boot)
Comment contrôler les transactions dans Spring Boot sans utiliser @Transactional
Comment changer le nom de l'application dans les rails
Comment inclure Spring Tool dans Eclipse 4.6.3?
Comment diviser un fichier de message Spring Boot
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
Comment réduire l'image de Spring Boot Docker
Comment utiliser les attributs de session Spring Boot (@SessionAttributes)
Comment définir plusieurs orm.xml dans Spring4, JPA2.1
[Spring Boot] Comment se référer au fichier de propriétés
[Spring Boot] Comment obtenir des propriétés dynamiquement à partir d'une chaîne contenue dans une URL
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
Comment régler l'heure d'affichage sur l'heure japonaise dans les rails
Comment définir l'injection de dépendance Spring Boot (DI)
Comment écrire un test unitaire pour Spring Boot 2
Changer la date et l'heure en notation japonaise dans Rails
[Spring Boot] Comment créer un projet (pour les débutants)
Comment tester l'écran de téléchargement de fichiers avec Spring + Selenium
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Comment démarrer par environnement avec Spring Boot de Maven
[Débutant] Comment utiliser la conception Modifier les paramètres depuis l'introduction
Comment utiliser le référentiel de jobs en mémoire avec Spring Batch
Comment implémenter le processus d'authentification en spécifiant le nom d'utilisateur et le mot de passe dans Spring Boot
Définir le paramètre contextuel dans Spring Boot
Essayez Spring Boot de 0 à 100.
Comment régler chrony lorsque le temps change dans CentOS7
[Spring Boot] Validation du déplacement (@Validated / @Valid) à tout moment [BeanValidation]
Comment changer une chaîne dans un tableau en un nombre dans Ruby
Multi-projets Spring Boot 2 avec Gradle
Comment utiliser la même classe Mapper dans plusieurs sources de données avec Spring Boot + MyBatis
Comment obtenir des valeurs en temps réel avec TextWatcher (Android)
Paramètres d'échange à chaud Spring Boot
Introduction à Spring Boot ① ~ DI ~
Introduction à Spring Boot ② ~ AOP ~
Changements majeurs dans Spring Boot 1.5
NoHttpResponseException dans Spring Boot + WireMock
Paramètres liés aux performances de Spring Boot
Introduction à Spring Boot, partie 1
Comment surveiller les informations d'application en temps réel à l'aide de JConsole
Comment changer la couleur d'arrière-plan de la barre de navigation, etc. dans Swift UI
Découvrons comment recevoir avec Request Body avec l'API REST de Spring Boot
Utilisez @ControllerAdvice, @ExceptionHandler, HandlerExceptionResolver dans Spring Boot pour intercepter les exceptions
[Sprint Boot] Comment utiliser les trois types de SqlParameterSource définis dans org.springframework.jdbc.core.namedparam
Comment créer un hinadan pour un projet Spring Boot à l'aide de SPRING INITIALIZR
Changer la demande / réponse de l'API REST Spring Boot de CamelCase à SankeCase
Comment créer votre propre contrôleur correspondant à / error avec Spring Boot
Comment définir et utiliser un profil avec une configuration basée sur des annotations dans le framework Spring
Ce que j'ai fait lors de la migration de la série Spring Boot 1.4 vers la série 2.0