Dernière modification : Dec 08 , 2024

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 :

## Annotations

Les 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 Validator

Hibernate 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.

## MicroProfile

MicroProfile 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 :

  1. List.of(): Une méthode statique pour créer une liste immuable.
  1. Set.of(): Une méthode statique pour créer un ensemble immuable.
  1. Map.of(): Une méthode statique pour créer une map immuable.
  1. Optional.isEmpty(): Méthode pour vérifier si un Optional est vide.
  1. String.isBlank(): Méthode pour vérifier si une chaîne est vide ou ne contient que des espaces.
  1. Stream.toList(): Méthode pour convertir un Stream en liste.
  1. Stream.toSet(): Méthode pour convertir un Stream en ensemble.
  1. Files.readString(): Méthode pour lire le contenu d'un fichier dans une chaîne.
  1. Files.writeString(): Méthode pour écrire une chaîne dans un fichier.
  1. 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.

Rappels Programmation Java pour Quarkus

Created by Sylvain Leroy


// 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!";
    }
}



// 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();
    }
}



// Exemple d'une classe de ressource JAX-RS
@Path("/api")
public class MyResource {
    @GET
    @Path("/hello")
    public String hello() {
        return "Hello, JAX-RS!";
    }
}



// Exemple d'une classe de modèle avec validation
public class Person {
    @NotBlank
    private String name;

    @Email
    private String email;

    // Getters and setters
}



// Exemple de récupération d'une propriété de configuration MicroProfile
@Inject
@ConfigProperty(name = "app.message")
String message;



Objectifs

  • Comprendre les principes fondamentaux des architectures microservices.
  • Identifier les avantages et les contraintes associés à l'utilisation de Quarkus dans un contexte microservices.

Exercices