Chapitre Développement avec Quarkus
Rappels Programmation Java pour Quarkus
Cette leçon vise à fournir une compréhension approfondie des architectures microservices, en mettant l'accent sur l'utilisation de Quarkus, un framework Java moderne et optimisé pour les microservices. Nous explorerons les principes fondamentaux de cette approche de conception logicielle, en mettant en lumière les avantages et les contraintes associés.
Rappels Programmation Java pour Quarkus
Structures Java pour une Application Quarkus
Lorsque vous écrivez une application Quarkus, il est important de comprendre certaines structures et concepts Java. Voici quelques-unes des structures clés à connaître :
## AnnotationsLes annotations sont largement utilisées dans Quarkus pour configurer et personnaliser le comportement des différentes parties de l'application. Voici quelques exemples d'annotations couramment utilisées :
```java// Exemple d'annotation de point de terminaison REST
@Path("/api")
public class MyResource {
// Exemple d'annotation de méthode REST
@GET
@Path("/hello")
public String hello() {
return "Hello, Quarkus!";
}
}
Dans cet exemple, nous utilisons les annotations @Path et @GET pour définir un point de terminaison REST "/api/hello" qui renvoie "Hello, Quarkus!".
Vous pouvez également utiliser des annotations pour configurer des dépendances, spécifier des comportements spécifiques, etc.
## CDI (Contexts and Dependency Injection)CDI est un mécanisme clé dans Quarkus pour la gestion des dépendances et la gestion des cycles de vie des composants. Voici un exemple d'utilisation de CDI :
```java// Exemple de classe de service avec injection de dépendance
@ApplicationScoped
public class MyService {
public String greet() {
return "Hello from CDI!";
}
}
// Exemple d'injection de dépendance dans une classe de ressource
@Path("/api")
public class MyResource {
@Inject
MyService myService;
@GET
@Path("/greet")
public String greet() {
return myService.greet();
}
}
```Dans cet exemple, la classe MyService est annotée avec @ApplicationScoped pour indiquer qu'elle est gérée par CDI. Ensuite, nous injectons MyService dans la classe MyResource à l'aide de l'annotation @Inject.
## JAX-RS (Java API for RESTful Web Services)JAX-RS est une spécification Java EE qui simplifie le développement d'applications RESTful en Java. Voici un exemple d'utilisation de JAX-RS :
```java// Exemple d'une classe de ressource JAX-RS
@Path("/api")
public class MyResource {
@GET
@Path("/hello")
public String hello() {
return "Hello, JAX-RS!";
}
}
Dans cet exemple, nous utilisons les annotations @Path et @GET de JAX-RS pour définir un point de terminaison REST "/api/hello" qui renvoie "Hello, JAX-RS!".
## Hibernate ValidatorHibernate Validator est utilisé dans Quarkus pour la validation des données. Voici un exemple d'utilisation de Hibernate Validator :
```java// Exemple d'une classe de modèle avec validation
public class Person {
@NotBlank
private String name;
@Email
private String email;
// Getters and setters
}
```Dans cet exemple, nous utilisons les annotations de validation de Hibernate Validator telles que @NotBlank et @Email pour spécifier des règles de validation pour les champs de la classe Person.
## MicroProfileMicroProfile est une spécification basée sur Java EE conçue pour les microservices cloud-native. Voici un exemple d'utilisation de MicroProfile :
```java// Exemple de récupération d'une propriété de configuration MicroProfile
@Inject
@ConfigProperty(name = "app.message")
String message;
Dans cet exemple, nous utilisons l'annotation @ConfigProperty de MicroProfile pour injecter une propriété de configuration "app.message" dans une variable String.
## Structures de Données Java (Java 17+)Java 17 a introduit de nouvelles structures de données pour simplifier le développement et améliorer les performances. En voici quelques-unes :
- List.of(): Une méthode statique pour créer une liste immuable.
- Set.of(): Une méthode statique pour créer un ensemble immuable.
- Map.of(): Une méthode statique pour créer une map immuable.
- Optional.isEmpty(): Méthode pour vérifier si un Optional est vide.
- String.isBlank(): Méthode pour vérifier si une chaîne est vide ou ne contient que des espaces.
- Stream.toList(): Méthode pour convertir un Stream en liste.
- Stream.toSet(): Méthode pour convertir un Stream en ensemble.
- Files.readString(): Méthode pour lire le contenu d'un fichier dans une chaîne.
- Files.writeString(): Méthode pour écrire une chaîne dans un fichier.
- LocalDate.of(): Méthode pour créer une instance de LocalDate à partir d'une année, d'un mois et d'un jour spécifiés.
Objectifs
- Comprendre les principes fondamentaux des architectures microservices.
- Identifier les avantages et les contraintes associés à l'utilisation de Quarkus dans un contexte microservices.