Introduction à Spring Boot: création d'une API REST simple en Java


En raison de la configuration de dépendance lourde, la configuration de Spring pour les applications d'entreprise est devenue une tâche très fastidieuse et sujette aux erreurs. Cela est particulièrement vrai pour les applications qui utilisent également plusieurs bibliothèques tierces.


Chaque fois que vous créez une autre application Java d'entreprise basée sur Spring, vous devez répéter les mêmes étapes de routine pour la configurer:


  • Selon le type d'application en cours de création (Spring MVC, Spring JDBC, Spring ORM, etc.), importez les modules Spring nécessaires
  • Importer une bibliothèque de conteneurs Web (pour les applications Web)
  • Importez les bibliothèques tierces nécessaires (par exemple, Hibernate, Jackson), tandis que vous devez rechercher des versions compatibles avec la version spécifiée de Spring
  • Configurez les composants DAO, tels que: sources de données, gestion des transactions, etc.
  • Configurer les composants de la couche Web, tels que: gestionnaire de ressources, résolveur de vue
  • Définissez une classe qui chargera toutes les configurations nécessaires.

1. Présentation de Spring Boot


Les auteurs de Spring ont décidé de fournir aux développeurs des utilitaires qui automatisent le processus de configuration et accélèrent le processus de création et de déploiement des applications Spring, collectivement appelés Spring Boot


Spring Boot est un projet utile dont le but est de simplifier la création d'applications basées sur Spring. Il vous permet de créer une application Web de la manière la plus simple, en exigeant un minimum d'effort de la part des développeurs pour configurer et écrire du code.


2. Caractéristiques de Spring Boot


Spring Boot a de grandes fonctionnalités, mais ses fonctionnalités les plus importantes sont: la gestion des dépendances, la configuration automatique et les conteneurs de servlet intégrés


2.1. Gestion facile des dépendances


Pour accélérer le processus de gestion des dépendances, Spring Boot emballe implicitement les dépendances tierces nécessaires pour chaque type d'application Spring et les fournit au développeur via les soi-disant packages de démarrage (spring-boot-starter-web, spring-boot-starter-data-jpa, etc.) .d.)


Les packages de démarrage sont un ensemble de descripteurs de dépendance pratiques que vous pouvez inclure dans votre application. Cela fournira une solution universelle pour toutes les technologies liées à Spring, évitant au programmeur de rechercher inutilement des exemples de code et de charger les descripteurs de dépendance requis à partir d'eux (un exemple de tels descripteurs et packages de démarrage sera montré ci-dessous)


Par exemple, si vous souhaitez commencer à utiliser Spring Data JPA pour accéder à la base de données, incluez simplement la dépendance spring-boot-starter-data-jpa dans votre projet et vous avez terminé (vous n'avez pas besoin de rechercher des pilotes de base de données compatibles et des bibliothèques Hibernate)


Si vous souhaitez créer une application Web Spring, ajoutez simplement la dépendance Spring-boot-starter-web , qui extrait dans le projet toutes les bibliothèques nécessaires pour développer des applications Spring MVC, telles que spring-webmvc , jackson-json , validation-api et Tomcat.


En d'autres termes, Spring Boot collecte toutes les dépendances courantes et les définit en un seul endroit, ce qui permet aux développeurs de les utiliser simplement, au lieu de réinventer la roue à chaque fois qu'ils créent une nouvelle application


Par conséquent, lors de l'utilisation de Spring Boot , le fichier pom.xml contient beaucoup moins de lignes que lors de son utilisation dans les applications Spring


Consultez la documentation de tous les packages de démarrage Spring Boot.


2.2. Configuration automatique


La deuxième excellente fonctionnalité Spring Boot est la configuration automatique des applications


Après avoir choisi le package de démarrage approprié, Spring Boot essaiera de configurer automatiquement l'application Spring en fonction des dépendances jar que vous avez ajoutées


Par exemple, si vous ajoutez Spring-boot-starter-web , Spring Boot configurera automatiquement les beans enregistrés tels que DispatcherServlet , ResourceHandlers , MessageSource


Si vous utilisez spring-boot-starter-jdbc , Spring Boot enregistre automatiquement les beans DataSource , EntityManagerFactory , TransactionManager et lit les informations de connexion à la base de données à partir du fichier application.properties


Si vous n'utilisez pas la base de données et ne fournissez aucun détail sur la connexion en mode manuel, Spring Boot configurera automatiquement la base de données en mémoire, sans aucune configuration supplémentaire de votre part (s'il existe des bibliothèques H2 ou HSQL)


La configuration automatique peut être complètement redéfinie à tout moment avec les paramètres utilisateur


2.3. Prise en charge native du serveur d'applications - conteneur de servlet


Chaque application Web Spring Boot comprend un serveur Web intégré. Jetez un œil à la liste des conteneurs de servlets pris en charge dès la sortie de la boîte.


Les développeurs n'ont plus à se soucier de la configuration du conteneur de servlet et du déploiement de l'application sur celui-ci. Maintenant, l'application peut démarrer d'elle-même, en tant que fichier jar exécutable à l'aide du serveur intégré


Si vous devez utiliser un serveur HTTP distinct, excluez simplement les dépendances par défaut pour cela. Spring Boot fournit des packages de démarrage distincts pour différents serveurs HTTP


La création d'applications Web autonomes avec des serveurs intégrés est non seulement pratique pour le développement, mais également une solution acceptable pour les applications de niveau entreprise et devient de plus en plus utile dans le monde des microservices. La possibilité de regrouper rapidement un service entier (tel que l'authentification des utilisateurs) dans un artefact autonome et entièrement déployable qui fournit également une API facilite l'installation et le déploiement des applications


3. Exigences d'installation de Spring Boot


Pour configurer et exécuter des applications Spring Boot, les éléments suivants sont requis:


  • Java 8+
  • Apache Maven 3.x

4. Création d'une application Spring Boot


Passons maintenant à la pratique et à l'implémentation d'une API REST très simple pour accepter les paiements en utilisant les capacités de Spring Boot


4.1. Création d'un projet Web avec Maven


Créez un projet Maven dans l'IDE que vous utilisez, en l'appelant SpringBootRestService


Assurez-vous d'utiliser la version Java 8+ car Spring Boot ne fonctionne pas avec les versions antérieures


4.2. Configuration de Pom.xml


La deuxième étape consiste à configurer Spring Boot dans le fichier pom.xml


Toutes les applications Spring Boot sont configurées à partir de spring-boot-starter-parent , donc avant de définir davantage les dépendances, ajoutez starter-parent comme suit:


<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> 

Parce que Puisque nous créons une API REST, il est nécessaire d'utiliser Spring-Boot-Starter-Web comme une dépendance, qui définit implicitement toutes les autres dépendances, telles que Spring-Core , Spring-Web , Spring-Webmvc , API de servlet et la bibliothèque jackson-databind . ajoutez simplement ce qui suit à pom.xml:


 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 

Désormais, les bibliothèques JAR suivantes sont automatiquement importées dans votre projet:


image


L'étape suivante consiste à ajouter le plugin Spring Boot:


 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 

La dernière étape consiste à faire générer par Maven un fichier jar exécutable lors de l'assemblage:


 <packaging>jar</packaging> 

Ci-dessous, le fichier pom.xml complet:


 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>springboot.topjava.ru</groupId> <artifactId>SpringBootRestService</artifactId> <version>1.0</version> <packaging>jar</packaging> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 

Comme vous pouvez le voir, en utilisant une seule dépendance, nous pouvons créer une application Web entièrement fonctionnelle


4.3. Création de ressources REST


Nous allons maintenant créer un contrôleur de paiement avec des classes POJO pour les demandes et les réponses


Écrivons la classe de demande de paiement:


 package springboot.topjava.ru; public class PaymentRequest { private int userId; private String itemId; private double discount; public String getItemId() { return itemId; } public void setItemId(String itemId) { this.itemId = itemId; } public double getDiscount() { return discount; } public void setDiscount(double discount) { this.discount = discount; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } } 

Et aussi une classe qui traite la réponse de base retournée par notre service:


 package springboot.topjava.ru; public class BaseResponse { private final String status; private final Integer code; public BaseResponse(String status, Integer code) { this.status = status; this.code = code; } public String getStatus() { return status; } public Integer getCode() { return code; } } 

Créez maintenant un contrôleur:


 package springboot.topjava.ru; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/payment") public class PaymentController { private final String sharedKey = "SHARED_KEY"; private static final String SUCCESS_STATUS = "success"; private static final String ERROR_STATUS = "error"; private static final int CODE_SUCCESS = 100; private static final int AUTH_FAILURE = 102; @GetMapping public BaseResponse showStatus() { return new BaseResponse(SUCCESS_STATUS, 1); } @PostMapping("/pay") public BaseResponse pay(@RequestParam(value = "key") String key, @RequestBody PaymentRequest request) { final BaseResponse response; if (sharedKey.equalsIgnoreCase(key)) { int userId = request.getUserId(); String itemId = request.getItemId(); double discount = request.getDiscount(); // Process the request // .... // Return success response to the client. response = new BaseResponse(SUCCESS_STATUS, CODE_SUCCESS); } else { response = new BaseResponse(ERROR_STATUS, AUTH_FAILURE); } return response; } } 

4.4. Création de la classe d'application principale


Cette dernière étape consiste à créer une classe de configuration et à lancer l'application. Spring Boot prend en charge la nouvelle annotation @SpringBootApplication , ce qui équivaut à utiliser @Configuration , @EnableAutoConfiguration et @ComponentScan avec leurs attributs par défaut


Ainsi, il vous suffit de créer une classe annotée avec @SpringBootApplication , et Spring Boot activera la configuration automatique et analysera vos ressources dans le package actuel:


 package springboot.topjava.ru; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 

5. Déploiement de l'application Spring Boot


Profitons maintenant de la troisième grande fonctionnalité de Spring Boot - c'est un serveur intégré. Tout ce que nous devons faire est de créer un fichier jar exécutable à l'aide de Maven et de l'exécuter comme une application autonome normale:


  • Entrez en mode ligne de commande (commande cmd), accédez au dossier contenant pom.xml et entrez la commande mvn clean package
  • Maven va générer un fichier jar exécutable appelé SpringBootRestService-1.0.jar
  • Accédez au dossier cible cd
  • Exécutez ensuite le fichier jar: java -jar SpringBootRestService-1.0.jar
  • Accédez au navigateur à l' adresse http: // localhost: 8080 / payment

Notre API REST est en cours d'exécution et prête à servir les demandes via le port 8080 (par défaut)


Dans cet article, nous avons examiné les capacités de Spring Boot et créé un exemple pleinement fonctionnel à l'aide du serveur intégré.


Source:
https://dzone.com/articles/introducing-spring-boot


Dans la traduction, les informations ont été mises à jour:


  • Spring-boot-starter-parent a changé la version de 1.5.8.RELEASE à 2.1.1.RELEASE et en conséquence la liste des bibliothèques que Maven récupère a été mise à jour
  • Déclarations du référentiel Spring supprimées, les dépendances sont extraites du référentiel central
  • Dans la classe BaseResponse, les champs sont devenus définitifs, ont ajouté un constructeur et ont supprimé les setters
  • Dans le PaymentController, nous avons introduit la méthode showStatus () avec @GetMapping pour tester l'application dans le navigateur
  • Remplacement de @RequestMapping dans les méthodes par @ GetMapping / @ PostMapping
  • Des modifications ont également été apportées pour déployer l'application à partir de la ligne de commande

MISE À JOUR:


Comme l'a noté Lure_of_Chaos , maintenant tout peut être fait automatiquement via SPRING INITIALIZR . Et sans quitter votre JetBrains IntelliJ IDEA préférée .

Source: https://habr.com/ru/post/fr435144/


All Articles