Spring Boot sans serveur Web

1. Introduction

Spring Boot est un excellent framework pour créer rapidement de nouvelles applications Java pour une variété de cas d'utilisation. L'une des utilisations les plus courantes est en tant que serveur Web, utilisant l'un des nombreux conteneurs de servlet intégrés et moteurs de modèles pris en charge.

Cependant, Spring Boot a un certain nombre d'utilisations qui ne nécessitent pas de serveur Web : applications de console, planification de travaux, traitement par lots ou par flux, applications sans serveur, etc.

Dans ce didacticiel, nous examinerons plusieurs façons d'utiliser Spring Boot sans serveur Web.

2. Utilisation des dépendances

Le moyen le plus simple d'empêcher une application Spring Boot de démarrer un serveur Web intégré est de ne pas inclure le démarreur de serveur Web dans nos dépendances .

Cela signifie ne pas inclure la dépendance spring-boot-starter-web dans le fichier de construction Maven POM ou Gradle. Au lieu de cela, nous voudrions utiliser la dépendance plus basique spring-boot-starter à sa place.

Gardez à l'esprit qu'il est possible que les dépendances Tomcat soient incluses dans notre application en tant que dépendances transitives . Dans ce cas, nous pourrions avoir besoin d'exclure la bibliothèque Tomcat de la dépendance qui l'inclut.

3. Modification de l'application Spring

Une autre façon de désactiver le serveur Web intégré dans Spring Boot consiste à utiliser du code. Nous pouvons utiliser soit le SpringApplicationBuilder :

new SpringApplicationBuilder(MainApplication.class) .web(WebApplicationType.NONE) .run(args);

Ou nous pouvons utiliser la référence à SpringApplication :

SpringApplication application = new SpringApplication(MainApplication.class); application.setWebApplicationType(WebApplicationType.NONE); application.run(args);

Dans les deux cas, nous avons l'avantage de conserver les API de servlet et de conteneur disponibles sur le chemin de classe . Cela signifie que nous pouvons toujours utiliser les bibliothèques du serveur Web sans démarrer le serveur Web. Cela peut être utile, par exemple, si nous voulons les utiliser pour écrire des tests ou utiliser leurs API dans notre propre code.

4. Utilisation des propriétés de l'application

L'utilisation de code pour désactiver le serveur Web est une option statique - elle affectera notre application, quel que soit l'endroit où nous la déployons. Mais que faire si nous voulons créer le serveur Web dans des circonstances spécifiques?

Dans ce cas, nous pouvons utiliser les propriétés de l'application Spring:

spring.main.web-application-type=none

Ou en utilisant l'équivalent YAML:

spring: main: web-application-type: none

L'avantage de cette approche est que nous pouvons activer conditionnellement le serveur Web . À l'aide de profils ou de conditions Spring, nous pouvons contrôler le comportement du serveur Web dans différents déploiements.

Par exemple, nous pourrions avoir le serveur Web en cours de développement uniquement pour exposer des métriques ou d'autres points de terminaison Spring tout en le maintenant désactivé en production pour des raisons de sécurité.

Notez que certaines versions antérieures de Spring Boot utilisaient une propriété booléenne nommée web-environment pour activer et désactiver le serveur Web. Avec l'adoption des conteneurs traditionnels et réactifs dans Spring Boot, la propriété a été renommée et utilise désormais une énumération .

5. Conclusion

Il existe de nombreuses raisons de créer des applications Spring Boot sans serveur Web. Dans ce didacticiel, nous avons vu plusieurs façons de procéder. Chacun a ses avantages et ses inconvénients, nous devons donc choisir l'approche qui répond le mieux à nos besoins.