
Je vais créer l’application de gestion de livres kbooks avec les librairies suivantes :
- Spring 5
- Hibernate (avec JPA)
- Jersey
- H2
Le projet complet est disponible sur GitHub : https://github.com/Zenika/kbooks/tree/1.0.0
Prérequis
Si vous n’êtes pas familiers avec la syntaxe de Kotlin, je vous invite à suivre ce lien qui présente les bases du langage : https://medium.com/@magnus.chatt/why-you-should-totally-switch-to-kotlin-c7bbde9e10d5
Création du projet
La création de notre projet se fait comme en Java via http://start.spring.io/, il suffit de sélectionner Kotlin dans la liste des langages. Ensuite j’ajoute les dépendances dont j’ai besoin.
Modèle de données
Pour créer les entités, j’utilise les data class de Kotlin. Tous les paramètres doivent avoir une valeur par défaut pour que le compilateur Kotlin génère un constructeur vide, obligatoire avec Hibernate. À noter l’utilisation de la méthode mutableListOf() pour créer une liste mutable vide.
Book.kt, Author.kt :
IBookRepository.kt, IAuthorRepository.kt :
Service de gestion des livres
Maintenant que j’ai créé le modèle de données et les interfaces pour y accéder, je crée le service d’accès aux livres.
BookService.kt :
- Le mot clé lateinit qui permet l’injection de dépendance tout en ayant un type non null
- it qui est le nom par défaut du paramètre d’une lambda lorsqu’il n’y en a qu’un
- L’opérateur elvis ?: qui exécute l’opérande à sa droite si la valeur à gauche est nulle
- L’interpolation de chaines de caractères. Dans « Book $id does not exist », $id sera remplacé par la valeur de la variable id.
Je crée également le dto BookDto, comme pour l’entité j’utilise une data class.
La couche REST
Maintenant pour exposer le service via une api REST j’utilise Jax-RS avec Jersey.
BookResource.kt :
Enfin, je crée une configuration Spring pour exposer la ressource :
JerseyConfig.kt :
Tester avec Mockito-Kotlin
Je réalise les tests avec JUnit, Mockito, kotlin-test et mockito-kotlin. Les deux dernières librairies sont des wrappers des deux premières qui facilitent l’écriture de tests unitaires en Kotlin.
BookServiceTest.kt :
Conclusion
Le développement d’une application Spring Boot avec Kotlin est très proche de ce qui est fait en Java, on ne perd pas ses repères. Néanmoins ces quelques exemples mettent en avant les avantages de Kotlin qui est plus concis et permet d’être plus productif qu’avec Java.
Pour aller plus loin, je vous invite à découvrir les autres plateformes pour lesquelles Kotlin peut être utilisé. Vous pouvez par exemple faire du React mais également des applications natives pour Windows ou Android. Et si vous voulez tester Kotlin sans l’installer je vous invite à utiliser l’image Docker alpine-kotlin.

