[JAVA] Implémenter l'API REST avec Spring Boot

Voici un résumé de mes meilleures pratiques personnelles en date de juin 2018 concernant la combinaison d'outils lors de la mise en œuvre de l'API REST dans Spring Boot.

Environnement de développement (IDE)

Les choix

→ En tant qu'EDI, il est utilisé dans l'environnement de développement Android officiel, et IntelliJ IDEA est susceptible de se généraliser à l'avenir, mais Ultimate Edition est nécessaire pour utiliser la fonction de support de développement Spring. Eclipse est un bon choix pour les projets qui ne sont pas aussi bons que l'achat d'une licence.

référence

Outil de création

Les choix

→ Gradle, qui permet une écriture flexible avec Groovy, est susceptible de devenir courant dans le futur. Cependant, Maven est suffisant s'il n'est utilisé que pour la résolution et la construction de dépendances.

référence

Contrôle de la communication HTTP (conversion mutuelle entre l'API REST et l'API Java)

Les choix

→ JAX-RS est une spécification standard Java, et les bibliothèques d'implémentation qui peuvent être utilisées au niveau opérationnel ont été améliorées, il est donc préférable d'utiliser spring-boot-starter-jersey.

référence

Programmation orientée aspect (AOP)

Les choix

→ Il est facile de définir Spring AOP avec l'annotation AspectJ, et le paramètre peut être résumé dans le code. Cependant, si vous souhaitez définir l'aspect sur une instance qui n'est pas gérée par Spring, ou si vous souhaitez la définir à un moment autre que l'exécution de la méthode, vous devez utiliser AspectJ.

référence

Accès à la base de données

Les choix

→ spring-boot-starter-data-jpa est pratique car des opérations de base de données simples peuvent être décrites sans SQL.

De plus, il est nécessaire d'installer le connecteur correspondant pour se connecter à chaque DB. (Par exemple, dans le cas de MySQL, installez mysql-connector-java.)

référence

Pool de connexion

Les choix

→ Il est préférable d'utiliser Hikari CP, qui a d'excellentes performances et est recommandé par Spring Boot.

Gestion des transactions

Les choix

→ Lors de l'utilisation de transactions pour une seule ressource cible de transaction (DB, MQ, etc.), la fonction de gestion des transactions de Spring Framework est suffisante. Selon la référence Spring, si vous souhaitez utiliser des transactions sur plusieurs ressources, vous devez soit combiner Spring avec la fonction JTA du serveur d'applications, soit utiliser une bibliothèque de transactions telle que Atomikos.

référence

Bibliothèque de génération de code

Les choix

→ AutoValue est strictement une bibliothèque pour créer une classe de valeur immuable, mais Lombok peut être utilisé en ajoutant simplement une méthode d'accesseur à une classe générale, et il peut être utilisé de plusieurs façons. Cependant, si vous souhaitez étendre la fonction de génération de code, il est préférable d'implémenter l'extension d'AutoValue. (Lombok prend en charge Extension Method à titre d'essai, mais on ne sait pas si elle sera incluse dans la version officielle.)

référence

Lire le fichier de paramètres

Vous pouvez facilement lire le fichier de configuration en utilisant spring-boot-configuration-processor. Il existe trois façons de lire le fichier de configuration.

→ Les paramètres ayant souvent une structure hiérarchique, il est facile d'utiliser @ ConfigurationProperties.

référence

Enregistrement

Les choix

→ SLF4J + Logback est susceptible de devenir le courant dominant à l'avenir. Même si vous utilisez un autre système de journalisation, vous pouvez l'agréger dans SLF4J par la méthode introduite dans Bridging legacy APIs.

référence

tester

S'il n'y a pas de problème, il est préférable d'utiliser spring-boot-test. AssertJ (assertion), Hamcrest (opération de correspondance), [Mockito](http: / La bibliothèque requise pour les tests, telle que /mockito.org/) (mock), est terminée.

référence

Recommended Posts

Implémenter l'API REST avec Spring Boot
Implémentez une API Rest simple avec Spring Security avec Spring Boot 2.0
Implémenter l'application Spring Boot dans Gradle
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Implémenter l'API REST avec Spring Boot et JPA (Application Layer)
Implémenter l'API REST avec Spring Boot et JPA (couche d'infrastructure)
Implémenter l'API REST avec Spring Boot et JPA (Domain Layer Edition)
Implémentez une API Rest simple avec Spring Security & JWT avec Spring Boot 2.0
Comment implémenter le verrouillage optimiste dans l'API REST
Définir le paramètre contextuel dans Spring Boot
Implémenter GraphQL avec Spring Boot
Multi-projets Spring Boot 2 avec Gradle
Changements majeurs dans Spring Boot 1.5
NoHttpResponseException dans Spring Boot + WireMock
Hello World (API REST) avec Apache Camel + Spring Boot 2
[Spring Boot] Obtenez des informations utilisateur avec l'API Rest (débutant)
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 2)
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 1)
Spring avec Kotorin - 4 Conception d'API REST
Spring Boot Hello World dans Eclipse
Développement d'applications Spring Boot dans Eclipse
Écrire du code de test avec Spring Boot
Spring Boot: exemple de projet d'API Restful
Implémenter reCAPTCHA v3 dans Java / Spring
API RESTful d'autorisation d'accès au démarrage de printemps
Comment appeler et utiliser l'API en Java (Spring Boot)
Qu'est-ce que @Autowired dans Spring Boot?
Comment utiliser Thymeleaf avec Spring Boot
Découvrons comment recevoir avec Request Body avec l'API REST de Spring Boot
Paramètres de proxy et de délai d'expiration lors de l'appel de l'API avec le modèle Spring Rest
Changer la demande / réponse de l'API REST Spring Boot de CamelCase à SankeCase
[Débutant] Essayez d'écrire l'API REST pour l'application Todo avec Spring Boot
Implémenter l'autorisation API Gateway Lambda dans Java Lambda
Lancer un (ancien) projet Spring Boot avec IntelliJ
Créer une image Spring Boot + Docker avec Gradle
Priorité d'accès aux fichiers statiques dans Spring Boot
Sortie du journal Spring Boot au format json
Mémorandum de téléchargement de fichier local avec Spring Boot
Créer un projet Java Spring Boot avec IntelliJ
Utiliser la méthode de requête DynamoDB avec Spring Boot
Implémenter CRUD avec Spring Boot + Thymeleaf + MySQL
Implémenter la fonction de pagination avec Spring Boot + Thymeleaf
DI SessionScope Bean dans le filtre Spring Boot 2
Modifier le délai d'expiration de la session dans Spring Boot
Défi Spring Boot
Forme de botte de printemps
Spring Boot Rappelez-vous
gae + botte à ressort
Cookie SameSite dans Spring Boot (Spring Web MVC + Tomcat)
Testez le contrôleur avec Mock MVC dans Spring Boot
Traitement asynchrone avec exécution régulière dans Spring Boot
Exécuter un projet Spring Boot avec VS Code
Sortie des journaux de demande et de réponse avec Spring Boot
Essayez d'implémenter la fonction de connexion avec Spring Boot
Utiliser le filtre de servlet avec Spring Boot [compatible Spring Boot 1.x, 2.x]
Comment ajouter un chemin de classe dans Spring Boot
Conseils Java - Créez un projet Spring Boot avec Gradle
Comment se lier avec un fichier de propriétés dans Spring Boot
◆ Obtenez l'API créée par Spring Boot à partir de React
Créer un serveur API Web avec Spring Boot
Annotations utilisées dans les outils de gestion des tâches Spring Boot