Maison > Java > javaDidacticiel > le corps du texte

Exploiter la configuration et l'intégration automatiques avec les services de développement Quarkus pour un développement efficace

WBOY
Libérer: 2024-09-03 13:11:28
original
422 Les gens l'ont consulté

JPrime 2024 s'est terminé avec succès !!

Les organisateurs de JPrime 2024 se sont encore une fois donné beaucoup de mal pour proposer une gamme diversifiée de sujets, garantissant qu'il y en ait pour tous les goûts.

Cependant, l'article d'aujourd'hui n'est pas déclenché par l'une des conférences de Michael Simons sur "L'évolution des tests d'intégration au sein de Spring et Quarkus" bien qu'il ait été très instructif. Il a exploré les stratégies de tests d'intégration, en se concentrant sur la configuration dans Spring Boot.

L'auteur a clairement souligné que les problèmes qu'il a soulignés sont efficacement résolus dans Quarkus grâce à l'utilisation des services de développement (Figure 1). Cela met en évidence une autre raison pour laquelle je considère Spring Boot avec scepticisme à l'égard de certaines applications : ses complexités contrastent fortement avec les solutions rationalisées de Quarkus, en particulier avec l'utilisation des services de développement.

Harnessing Automatic Setup and Integration with Quarkus Dev Services for Efficient Development

Figure 1 – JPrime 2024

Il était remarquable de constater l'étonnement que Dev Services a suscité parmi les nouveaux participants. Cependant, il est important de noter que Dev Services n'est pas une fonctionnalité récente de Quarkus ; cela fait partie intégrante du cadre depuis un certain temps. Approfondissons les services de développement Quarkus et explorons ses avantages durables.

Services de développement Quarkus

Dans Quarkus, les services de développement facilitent le provisionnement automatique de services non configurés en mode développement et test. Essentiellement, si vous incluez une extension sans la configurer, Quarkus lancera automatiquement le service concerné (en utilisant souvent Testcontainers en arrière-plan) et configurera votre application pour utiliser ce service efficacement.

  1. Détection et lancement automatiques du service

    Quarkus Dev Services automatise la détection et le lancement des services nécessaires tels que les bases de données, les courtiers de messages et autres services backend. Cette fonction exploite les dépendances de l'application spécifiées dans pom.xml ou build.gradle. Par exemple, l'ajout d'un pilote de base de données déclenche automatiquement le démarrage par Dev Services d'une instance conteneurisée correspondante de cette base de données si elle n'est pas déjà en cours d'exécution. La technologie utilisée ici implique principalement Testcontainers, qui permet la création d'instances légères et jetables de bases de données courantes, de navigateurs Web Selenium ou de tout autre élément pouvant s'exécuter dans un conteneur Docker.

  2. Injection de configuration dynamique

    Une fois les services requis instanciés, Quarkus Dev Services injecte dynamiquement les détails de connexion au service pertinents dans la configuration de l'application au moment de l'exécution. Cela se fait sans aucune intervention manuelle, à l'aide d'une fonctionnalité connue sous le nom de tests continus qui redirige la base de données standard ou d'autres URL de service vers les conteneurs de test automatiquement provisionnés. Les propriétés de configuration telles que les URL, les informations d'identification de l'utilisateur et d'autres paramètres opérationnels sont définies de manière transparente, permettant à l'application d'interagir avec ces services comme s'ils étaient configurés manuellement.

  3. Comportements spécifiques au service

    Dev Services est adapté à différents types de services :

    • Bases de données : Fournit automatiquement une base de données en cours d'exécution adaptée aux besoins de votre application, qu'il s'agisse de PostgreSQL, MySQL, MongoDB ou de toute autre base de données prise en charge. Dev Services garantit qu'un Testcontainer correspondant est disponible pendant le développement.
    • Systèmes de messagerie : Pour les applications qui utilisent des systèmes de messagerie comme Kafka ou AMQP, Quarkus Dev Services démarre les courtiers nécessaires à l'aide de Docker et les connecte à l'application.
    • Services de développement personnalisés : Les développeurs peuvent étendre les fonctionnalités en créant des extensions Quarkus personnalisées qui exploitent le framework Dev Services. Cela permet des configurations sur mesure spécifiques au projet, offrant encore plus de flexibilité et de contrôle.
  4. Gestion du réseau et isolation des services

    Chaque service créé par Quarkus Dev Services s'exécute dans son environnement isolé. Ceci est crucial pour garantir qu’il n’y a pas de conflits de ports, de résidus de données ou de problèmes de sécurité entre les différents tests de développement. Malgré cet isolement, les services sont mis en réseau de manière appropriée à l'aide de Docker, garantissant qu'ils peuvent communiquer entre eux selon les besoins, imitant une atmosphère de déploiement réelle.

  5. Gestion du cycle de vie

    Quarkus gère le cycle de vie complet de ces services fournis de manière dynamique. Lorsque vous démarrez votre application en mode développement, les services nécessaires sont automatiquement démarrés. Lorsque vous arrêtez l'application Quarkus, ces services sont également interrompus. Cette gestion inclut la gestion de la persistance des données selon les besoins, permettant aux développeurs de reprendre là où ils s'étaient arrêtés sans aucun retard de configuration.

Exemple d'utilisation

Considérez que vous utilisez une base de données PostgreSQL avec Quarkus. Si aucune configuration PostgreSQL existante n'est détectée, Quarkus lancera un conteneur PostgreSQL Docker et connectera automatiquement votre application.

Ces services sont activés par défaut en modes développement et test mais peuvent être désactivés si nécessaire via l'application.properties :

quarkus.datasource.devservices.enabled=false
Copier après la connexion

Développons le scénario dans lequel Quarkus utilise une base de données PostgreSQL et comment les services de développement facilitent cela avec un minimum de complications.

Si Quarkus détecte qu'aucune configuration PostgreSQL n'est active (non exécutée ou non configurée explicitement), il démarrera automatiquement un conteneur PostgreSQL à l'aide de Docker. Ceci est mis en place en coulisses via Dev Services.

Pour interagir avec la base de données via une couche ORM, pensez à utiliser Quarkus Panache, qui simplifie les opérations ORM d'Hibernate. Voici comment configurer votre environnement :

  1. Ajouter des dépendances

    Tout d'abord, incluez les dépendances nécessaires dans votre pom.xml :

    <dependency>
     <groupId>io.quarkus</groupId>
     <artifactId>quarkus-hibernate-orm-panache</artifactId>
    </dependency>
    <dependency>
     <groupId>io.quarkus</groupId>
     <artifactId>quarkus-jdbc-postgresql</artifactId>
    </dependency>
    
    Copier après la connexion
  2. Définir l'entité

    Ensuite, définissez votre entité, telle que CityEntity :

    @Entity
    @Table(name = "cities")
    public class CityEntity {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    @Column(name = "public_id")
    private String publicId;
    
    @OneToOne
    private StateEntity state;
    
    @Column(nullable = false, name = "created_at")
    private Instant createdAt;
    
    @Column(nullable = false, name = "last_modified")
    private Instant lastModified;
    
    @PrePersist
    protected void onCreate() {
     createdAt = Instant.now();
     lastModified = createdAt;
    }
    
    @PreUpdate
    protected void onUpdate() {
     lastModified = Instant.now();
    }
    }
    
    Copier après la connexion
  3. Créer le référentiel

    Implémenter le référentiel qui interagira directement avec la base de données :

    @ApplicationScoped
    public class CityRepository implements 
    PanacheRepository<CityEntity> {
    }
    
    Copier après la connexion
  4. Couche de service

    Définissez la couche de service qui utilise le référentiel :

    @ApplicationScoped
    public class CityServiceImpl implements CityService {
    
      @Inject
      CityRepository cityRepository;
    
      @Override
      public long countCities() {
       return cityRepository.count();
      }
    }
    
    public interface CityService {
     long countCities();
    }
    
    Copier après la connexion
  5. Point de terminaison de la ressource

    @Path("/cities")
    @Tag(name = "City Resource", description = "City APIs")
    public class CityResource {
    
      @Inject
      CityService cityService;
    
      @GET
      @Path("/count")
      @Operation(summary = "Get the total number of cities", 
       description = "Returns the total count of cities in the 
       system.")
      @APIResponse(responseCode = "200", description = "Successful 
      response", content = @Content(mediaType = "application/json", 
      schema = @Schema(implementation = Long.class)))
      public long count() {
       return cityService.countCities();
      }
     }
    
    Copier après la connexion

Lorsque vous exécutez votre application Quarkus (mvn quarkus:dev), observez le démarrage automatique du conteneur PostgreSQL (Figure 2). Cette intégration transparente illustre la puissance de Quarkus Dev Services, simplifiant considérablement le développement et les tests en automatisant la configuration et la configuration de la connexion aux services externes nécessaires à votre application.

Harnessing Automatic Setup and Integration with Quarkus Dev Services for Efficient Development

Figure 2 – Journaux d'application

Services de développement de plateforme

Quarkus Dev Services rationalise les phases de développement et de test en gérant la configuration et la gestion de divers services, permettant ainsi aux développeurs de se concentrer davantage sur l'application elle-même. Quarkus prend en charge une large gamme de services de développement, notamment :

  • AMQP
  • Registre Apicurio
  • Bases de données
  • Kafka
  • Porte-clés
  • Kubernetes
  • MongoDB
  • LapinMQ
  • Pulsar
  • Redis
  • Coffre
  • Infinispan
  • Elasticsearch
  • Observabilité
  • Neo4j
  • WireMock
  • Microcks
  • Porte-clés
  • et bien d'autres, chacun conçu pour améliorer votre environnement de développement de manière transparente

Conclusion

Quarkus Dev Services représente un changement de paradigme dans la façon dont les développeurs abordent la configuration et l'intégration de services externes pendant les phases de développement et de test. L'automatisation de la configuration de l'environnement accélère non seulement le processus de développement, mais réduit également le risque d'erreurs de configuration, permettant ainsi aux équipes de se concentrer plus facilement sur la création d'applications robustes et riches en fonctionnalités.

L'un des avantages les plus remarquables de Quarkus Dev Services est l'accent mis sur la productivité des développeurs. En supprimant la nécessité de gérer manuellement les dépendances des services, les développeurs peuvent immédiatement commencer à travailler sur la logique métier et les fonctionnalités des applications. Ce flux de travail rationalisé est particulièrement bénéfique dans les architectures de microservices où plusieurs services peuvent nécessiter un développement et une intégration simultanés

En conclusion, l'adoption de Quarkus Dev Services pourrait avoir un impact significatif sur l'efficacité de votre équipe de développement et les résultats du projet. La simplicité et la puissance de Quarkus encouragent l'expérimentation,
des itérations plus rapides et, finalement, un cycle de développement plus rapide. Ce type de levier technologique est ce dont les entreprises modernes ont besoin pour prospérer à l’ère numérique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!