10 votes

Spring Boot Devtools par l'exemple

Selon la Spring Boot Devtools docs En effet, si vous exécutez votre application Spring Boot avec l'option java -jar .., alors il n'utilisera pas la magie de la JVM intégrée à devtools. Cependant, l'outil Spring Boot starter docs ne vous montre qu'une seule façon d'exécuter votre application Spring Boot... via java -jar... .

Je me pose donc d'abord une question : Comment faire fonctionner mon application Spring Boot en mode non-production ? Je sais que vous pouvez exécuter votre application avec Spring Boot CLI (e.g. spring run ), mais est-ce la seule solution ?

De plus, la même documentation de devtools mentionne que vous pouvez explicitement supprimer le jar de devtools de votre binaire de production en utilisant un certain nombre de excludeDevtools mais ils n'expliquent jamais où et comment l'utiliser. Y a-t-il des exemples/idées ?

8voto

Marius Bogoevici Points 2032

1) Un exemple d'exécution d'une application Spring Boot en mode non-production (c'est-à-dire pas à partir du JAR) est à partir d'un IDE (plus spécifiquement Eclipse ou IntelliJ), où vous pouvez lancer l'application à partir de la méthode principale, ou en utilisant le support de lancement de Spring Boot. C'est l'utilisation la plus pratique des Dev Tools car elle permet de suivre en continu les changements dans votre application sans la redémarrer.

2) excludeDevTools est une option du plugin Maven Spring Boot http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/maven-plugin/repackage-mojo.html ou le plugin Gradle - voir http://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-gradle-plugin.html#build-tool-plugins-gradle-repackage-configuration .

Dans votre cas, il s'agirait donc de bootRepackage { mainClass = 'demo.Application' excludeDevtools = true }

1voto

rajadilipkolli Points 1983

Pour commencer, Spring boot et devtools ont facilité le développement. Spring boot utilise des conteneurs de servlets intégrés (Tomcat, undertow, jetty), ce qui permet d'avoir un code prêt pour la production, même dans un environnement de non-production.

Pour répondre à votre question sur l'exécution d'une application Spring-boot dans un environnement de non-production, nous pouvons exécuter l'application directement à partir de l'IDE Spring tool suite en faisant un clic droit -> run as Spring boot s'il s'agit d'un environnement local.

Si l'outil de construction utilisé est maven, à l'invite de commande mvn boot:run, si c'est gradle, gradle bootRun à partir du dossier racine de l'emplacement du projet à l'invite de commande. Si vous compilez votre application sous forme d'uber jar, alors Java -jar , et si votre environnement est Linux, vous pouvez démarrer en tant que processus.

En ce qui concerne l'ignorance de devtools dans l'environnement de production, Spring boot ignore intelligemment le jar de devtools si nous spécifions Spring-boot-devtools en tant qu'option dans les dépendances de votre outil de construction (maven, gradle). Dans gradle, le plugin Spring boot gradle se charge d'ignorer devtools pour le jar ou war final déployé.

Mise à jour : : Pour déboguer une application Spring Boot exécutée avec Gradle, comme vu à l'adresse suivante http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-remote-debug-gradle-run596

Ajoutez ceci à votre fichier build.gradle :

applicationDefaultJvmArgs = [

"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" ]

Dans IntelliJ Idea IDE ou STS, créez une nouvelle configuration Debug et dans les options sélectionnez "Remote". Les valeurs par défaut devraient convenir, mais faites attention au numéro de port et au type de transport ("socket"). Amusez-vous bien !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X