Vue d’ensemble des outils de développement Spring-Boot

Présentation des outils de développement Spring-Boot

1. introduction

Spring Boot nous permet d’installer et d’exécuter rapidement des services.

Pour améliorer encore l'expérience de développement, Spring a publié l'outil spring-boot-devtools, intégré à Spring Boot-1.3. Cet article va essayer de couvrir les avantages que nous pouvons obtenir en utilisant la nouvelle fonctionnalité.

Nous aborderons les sujets suivants:

  • Propriété par défaut

  • Redémarrage automatique

  • Live Recharger

  • Paramètres globaux

  • Applications distantes

1.1. Ajouter Spring-Boot-Devtools dans un projet

L'ajout despring-boot-devtools dans un projet est aussi simple que l'ajout d'un autre module de démarrage à ressort. Dans un projet spring-boot existant, ajoutez la dépendance suivante:


    org.springframework.boot
    spring-boot-devtools

Réalisez une construction propre du projet, et vous êtes maintenant intégré à spring-boot-devtools. La version la plus récente peut être récupérée à partir dehere et toutes les versions peuvent être trouvéeshere.

2. Valeurs par défaut de la propriété

Spring-Boot effectue de nombreuses configurations automatiques, notamment l'activation de la mise en cache par défaut pour améliorer les performances. Un tel exemple est la mise en cache des modèles utilisés par les moteurs de modèles, par exemple. thymeleaf. Mais pendant le développement, il est plus important de voir les changements le plus rapidement possible.

Le comportement par défaut de la mise en cache peut être désactivé pourthymeleaf en utilisant la propriétéspring.thymeleaf.cache=false dans le fichierapplication.properties. Nous n'avons pas besoin de le faire manuellement, l'introduction de cespring-boot-devtools le fait automatiquement pour nous.

3. Redémarrage automatique

Dans un environnement de développement d'application typique, un développeur apporterait des modifications, construirait le projet et déploierait / démarrerait l'application pour que les nouvelles modifications prennent effet, ou bien essayait de tirer parti deJRebel, etc.

En utilisantspring-boot-devtools,, ce processus est également automatisé. Chaque fois que des fichiers changent dans le chemin de classe, les applications utilisantspring-boot-devtools provoqueront le redémarrage de l'application. L'avantage de cette fonctionnalité est le temps requis pour vérifier que les modifications apportées sont considérablement réduites:

19:45:44.804 ... - Included patterns for restart : []
19:45:44.809 ... - Excluded patterns for restart : [/spring-boot-starter/target/classes/, /spring-boot-autoconfigure/target/classes/, /spring-boot-starter-[\w-]+/, /spring-boot/target/classes/, /spring-boot-actuator/target/classes/, /spring-boot-devtools/target/classes/]
19:45:44.810 ... - Matching URLs for reloading : [file:/.../target/test-classes/, file:/.../target/classes/]

 :: Spring Boot ::        (v1.5.2.RELEASE)

2017-03-12 19:45:45.174  ...: Starting Application on machine with PID 7724 (\target\classes started by user in )
2017-03-12 19:45:45.175  ...: No active profile set, falling back to default profiles: default
2017-03-12 19:45:45.510  ...: Refreshing org.springframework.boot[email protected]385c3ca3: startup date [Sun Mar 12 19:45:45 IST 2017]; root of context hierarchy

Comme on le voit dans les journaux, le thread qui a engendré l'application n'est pas unmain plutôt un threadrestartedMain. Toute modification apportée au projet, qu’il s’agisse d’une modification de fichier java, entraînera un redémarrage automatique du projet:

2017-03-12 19:53:46.204  ...: Closing org.springframework.boot[email protected]385c3ca3: startup date [Sun Mar 12 19:45:45 IST 2017]; root of context hierarchy
2017-03-12 19:53:46.208  ...: Unregistering JMX-exposed beans on shutdown


 :: Spring Boot ::        (v1.5.2.RELEASE)

2017-03-12 19:53:46.587  ...: Starting Application on machine with PID 7724 (\target\classes started by user in )
2017-03-12 19:53:46.588  ...: No active profile set, falling back to default profiles: default
2017-03-12 19:53:46.591  ...: Refreshing org.springframework.boot[email protected]acaf4a1: startup date [Sun Mar 12 19:53:46 IST 2017]; root of context hierarchy

4. Live Recharger

Le modulespring-boot-devtools comprend un serveur LiveReload intégré qui est utilisé pour déclencher une actualisation du navigateur lorsqu'une ressource est modifiée.

Pour que cela se produise dans le navigateur, nous devons installer le plugin LiveReload, une telle implémentation estRemote Live Reload pour Chrome.

5. Paramètres globaux

spring-boot-devtools fournit un moyen de configurer des paramètres globaux qui ne sont associés à aucune application. Ce fichier est nommé.spring-boot-devtools.properties et il se trouve dans $ HOME.

6. Applications à distance

6.1. Débogage à distance via HTTP (tunnel de débogage à distance)

spring-boot-devtools fournit des capacités de débogage à distance prêtes à l'emploi via HTTP, pour avoir cette fonctionnalité, il est nécessaire quespring-boot-devtools soit intégré dans l'application. Ceci peut être réalisé en désactivant la configuration deexcludeDevtools dans le plugin de maven.

Voici un exemple rapide:


    
        
            org.springframework.boot
            spring-boot-maven-plugin
            
                false
            
        
    

Maintenant, pour que le débogage distant via HTTP fonctionne, il faut suivre les étapes suivantes:

  1. Une application en cours de déploiement et de démarrage sur le serveur doit être démarrée avec le débogage à distance activé:

    -Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n

    Comme nous pouvons le voir, le port de débogage distant n'est pas mentionné ici. Par conséquent, Java choisira un port aléatoire

  2. Pour le même projet, ouvrez leLaunch configurations, choisissez les options suivantes: Sélectionnez la classe principale:org.springframework.boot.devtools.RemoteSpringApplication Dans les arguments du programme, ajoutez l'URL de l'application, par ex. http://localhost:8080

  3. Le port par défaut pour le débogueur via l'application spring-boot est 8000 et peut être remplacé via:

    spring.devtools.remote.debug.local-port=8010
  4. Créez maintenant une configuration de débogage à distance, en définissant le port en tant que8010 comme configuré via les propriétés ou8000, si vous respectez les valeurs par défaut

Voici à quoi ressemblera le journal:

  .   ____          _                                              __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _          ___               _      \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` |        | _ \___ _ __  ___| |_ ___ \ \ \ \
 \\/  ___)| |_)| | | | | || (_| []::::::[]   / -_) '  \/ _ \  _/ -_) ) ) ) )
  '  |____| .__|_| |_|_| |_\__, |        |_|_\___|_|_|_\___/\__\___|/ / / /
 =========|_|==============|___/===================================/_/_/_/
 :: Spring Boot Remote ::  (v1.5.2.RELEASE)

2017-03-12 22:24:11.089  ...: Starting RemoteSpringApplication v1.5.2.RELEASE on machine with PID 10476 (..\org\springframework\boot\spring-boot-devtools\1.5.2.RELEASE\spring-boot-devtools-1.5.2.RELEASE.jar started by user in project)
2017-03-12 22:24:11.097  ...: No active profile set, falling back to default profiles: default
2017-03-12 22:24:11.357  ...: Refreshing org.spring[email protected]11e21d0e: startup date [Sun Mar 12 22:24:11 IST 2017]; root of context hierarchy
2017-03-12 22:24:11.869  ...: The connection to http://localhost:8080 is insecure. You should use a URL starting with 'https://'.
2017-03-12 22:24:11.949  ...: LiveReload server is running on port 35729
2017-03-12 22:24:11.983  ...: Started RemoteSpringApplication in 1.24 seconds (JVM running for 1.802)
2017-03-12 22:24:34.324  ...: Remote debug connection opened

6.2. Mise à jour à distance

Le client distant surveille le chemin d'accès aux classes de l'application pour déterminer les modifications, comme pour la fonction de redémarrage à distance. Toute modification du chemin de classe entraîne le transfert de la ressource mise à jour vers l'application distante et le redémarrage.

Les modifications sont effectuées lorsque le client distant est opérationnel et que la surveillance des fichiers modifiés n’est possible qu’à ce moment-là.

Voici à quoi cela ressemble dans les journaux:

2017-03-12 22:33:11.613  INFO 1484 ...: Remote debug connection opened
2017-03-12 22:33:21.869  INFO 1484 ...: Uploaded 1 class resource

7. Conclusion

Avec cet article rapide, nous venons de démontrer comment nous pouvons tirer parti du modulespring-boot-devtools pour améliorer l'expérience des développeurs et réduire le temps de développement en automatisant de nombreuses activités.