Vous souhaitez créer une APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. web simplement ? Rien de mieux que Spring BootFramework Java se basant sur Spring. ! Dans cet article, on vous montre comment initialiser une API web avec Springboot. Allez, c’est parti !
Spring Boot (extension de Spring) est un framework de développement Java open source, il permet de concevoir des applications web et est notamment recommandé pour la création d’API web légères et modulaires. A l’opposé, on retrouve le célèbre JavaLangage de développement très populaire ! EE qui est lui, plutôt destiné aux applications d’entreprises très lourdes.
Son principal avantage est d’être bootable facilement ! L’objectif est d’avoir le strict minimum pour lancer son projet, organiser le code et la manière de faire, le tout en optimisant les performances.
Spring Boot définit une configuration de base permettant de simplifier et rendre rapide la création de nouveaux projets. Notre projet aura seulement besoin de certaines librairies pour commencer.
Il est possible de générer rapidement un nouveau projet sur http://start.spring.io, en spécifiant si c’est un projet Maven ou Gradle, le langage (Java, Kotlin, Groovy), la version de Spring Boot et de Java, le packaging (Jar ou War) et des dépendances de base (facultatif).
On pourra ajouter, dans le pom.xml, d’autres modules au besoin durant l’avancement du projet (Spring Batch, Websocket, serveur de mail...). Il est aussi possible de commencer son projet sur un IDEEnvironnement de développement permettant de faciliter le développement d'applications. tel que IntelliJ.
Ici, on a choisi trois dépendances courantes pour débuter un nouveau projet :
On peut explorer le projet avant de le générer, on retrouve alors dans le pom.xml la version de Spring Boot et de Java, les métadonnées de notre projet ainsi que nos dépendances choisies à l’étape précédente.
Nous avons une architecture de base avec le dossier main contenant le back (Java), les ressources et le dossier test pour les tests d’intégration.
Dans "resources” se trouve le fichier application.properties contenant les propriétés de l’application, comme le numéro de port du serveur, l’url d’accès à la BDD, le type d’authentification etc... Il est aussi possible d’avoir ces propriétés dans un fichier YAML, application.yml.
server.port = 8080
spring.application.name = demo
spring.data.mongodb.uri = mongodb://localhost/test
Côté back, deux classes ont été générées :
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
package com.example.demo;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
}
Voici quelques annotations principales proposées par Spring Boot qui permettent d’appliquer facilement des rôles et des comportements à des classes (on vous en cite quelques uns, mais il en existe beaucoup d’autres !) :
@Component : annotation générique pour des composants gérés par Spring.
@Component
public class DemoClass {
}
@Autowired : injecte des @Component dans une classe pour les utiliser.
public class MailConfig {
@Autowired
private ApplicationProperties applicationProperties;
}
@Service : classe qui réalise des traitements métiers sur des données.
@Service
public class StorageService {
}
@Repository : classe qui manipule des données d’une BDD.
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
@Controller : classe exposant une API RESTREST (REpresentational State Transfer) est un style d'architecture logicielle qui fonctionne sous un certain nombre de contraintes..
@Controller
public class UserController {
}
@RequestMapping : URI de base d’accès à votre API REST (« /api »)
@RestController
@RequestMapping("/api")
public class UserResource {
}
Une fois notre application développée, nous pouvons la lancer via un exécutable (Jar ou War contenu dans le dossier target) contenant un serveur embarqué qui va, à son tour, lancer le projet.
Créer une API Web avec Spring Boot comporte plein d’avantages. Pour nous, les plus importants sont les suivants :
Légèreté : il n’y a que le strict minimum pour faire tourner les services ! Pas de superflux !
Simplicité de prise en main : la configuration simplifiée du projet permet de se concentrer sur la partie métier. La complexité de la création de l’API est gérée par Spring Boot.
Rapidité et efficacité : avec un projet Maven ou Gradle, on obtient un Jar ou War, contenant les briques du serveur web qui est directement exécutable dans un service de conteneur comme AWS.
L’inconvénient majeur avec SpringBoot, c’est le débogage. Spring Boot est composé de plusieurs couches différentes qu’il est possible de décompiler, mais ce n’est pas simple quand on souhaite débugger pour remonter à la source du problème. On passe d’un fichier à un autre puis un autre etc... et ça peut être vraiment très long parfois !
OUI ! Spring Boot est LE framework pour commencer toute API web rapidement et simplement. À la portée de tous et en quelques clics, nous avons une configuration de base qui permet de démarrer directement le développement de notre projet, que l’on pourra faire évoluer par la suite !
Il est capable de créer des services suffisamment légers et performants, en ne conservant que ce dont nous avons réellement besoin et donne la possibilité de déployer/exécuter l’application sans aucune autre ressource externe... et ça, c’est le top !
Migrer un projet Spring Boot vers Quarkus : nous avons testé ! Découvrez notre retour d'expérience en détails dans cet article du blog AXOTALKS.
Tuto - Moderniser l'utilisation de l'AS400 avec Java Spring Boot ! On vous explique tout pas à pas.
Tuto - Comment appeler des programmes sur votre AS400 depuis votre application Java Spring Boot. On vous explique tout pas à pas !