Partager via


Préparer une application Spring Java pour le déploiement dans Azure Spring Apps

Remarque

Les plans Essentiel, Standard et Entreprise seront déconseillés à compter de la mi-mars 2025, avec une période de mise hors service de 3 ans. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez l’annonce de mise hors service d’Azure Spring Apps.

Le plan de consommation standard et dédiée sera déconseillé à compter du 30 septembre 2024, avec un arrêt complet après six mois. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez Migrer le plan de consommation standard et dédiée Azure Spring Apps vers Azure Container Apps.

Cet article s’applique à :✅ Essentiel/Standard ✅ Entreprise

Cet article explique comment préparer une application Steeltoe existante pour le déploiement sur Azure Spring Apps. Azure Spring Apps fournit des services robustes pour héberger, monitorer, mettre à l’échelle et mettre à jour une application Steeltoe.

Cet article présente les dépendances, la configuration et le code nécessaires pour exécuter une application .NET Core Steeltoe dans Azure Spring Apps. Pour plus d’informations sur le déploiement d’une application sur Azure Spring Apps, consultez Déployer votre première application Spring Boot dans Azure Spring Apps.

Remarque

La prise en charge d’Azure Spring Apps par Steeltoe est actuellement disponible en préversion publique. Les offres en préversion publique permettent aux clients de tester les nouvelles fonctionnalités avant leur publication officielle. Les fonctionnalités et services en préversion publique ne sont pas destinés à une utilisation en contexte de production. Pour en savoir plus sur le support offert avec les préversions, consultez notre FAQ ou envoyez une demande de support.

Versions prises en charge

Azure Spring Apps prend en charge :

  • .NET Core 3.1
  • Steeltoe 2.4 et 3.0

Dépendances

Pour Steeltoe 2.4, ajoutez le dernier package Microsoft.Azure.SpringCloud.Client 1.x.x au fichier projet :

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="1.0.0-preview.1" />
  <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Extensions.Configuration.ConfigServerCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Management.TracingCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Management.ExporterCore" Version="2.4.4" />
</ItemGroup>

Pour Steeltoe 3.0, ajoutez le dernier package Microsoft.Azure.SpringCloud.Client 2.x.x au fichier projet :

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="2.0.0-preview.1" />
  <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="3.0.0" />
  <PackageReference Include="Steeltoe.Extensions.Configuration.ConfigServerCore" Version="3.0.0" />
  <PackageReference Include="Steeltoe.Management.TracingCore" Version="3.0.0" />
</ItemGroup>

Mise à jour Program.cs

Dans la méthode Program.Main, appelez la méthode UseAzureSpringCloudService.

Pour Steeltoe 2.4.4, appelez UseAzureSpringCloudService après ConfigureWebHostDefaults et après AddConfigServer s’il est appelé :

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .AddConfigServer()
        .UseAzureSpringCloudService();

Pour Steeltoe 3.0.0, appelez UseAzureSpringCloudService avant ConfigureWebHostDefaults et avant tout code de configuration Steeltoe :

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .UseAzureSpringCloudService()
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .AddConfigServer();

Activer la détection de service Eureka Server

Remarque

Eureka n’est pas applicable au plan Entreprise. Si vous utilisez le plan Entreprise, consultez Utiliser le registre de service.

Dans la source de configuration utilisée quand l’application s’exécute dans Azure Spring Apps, définissez spring.application.name sur le même nom que l’application Azure Spring Apps dans laquelle le projet est déployé.

Par exemple, si vous déployez un projet .NET nommé EurekaDataProvider dans une application Azure Spring Apps nommée planet-weather-provider, le fichier appSettings.json doit inclure le code JSON suivant :

"spring": {
  "application": {
    "name": "planet-weather-provider"
  }
}

Utiliser la détection de service

Pour appeler un service à l'aide de la détection de service Eureka Server, envoyez des requêtes HTTP à http://<app_name>, sachant que app_name correspond à la valeur de la propriété spring.application.name de l'application cible. Par exemple, le code suivant appelle le service planet-weather-provider :

using (var client = new HttpClient(discoveryHandler, false))
{
    var responses = await Task.WhenAll(
        client.GetAsync("http://planet-weather-provider/weatherforecast/mercury"),
        client.GetAsync("http://planet-weather-provider/weatherforecast/saturn"));
    var weathers = await Task.WhenAll(from res in responses select res.Content.ReadAsStringAsync());
    return new[]
    {
        new KeyValuePair<string, string>("Mercury", weathers[0]),
        new KeyValuePair<string, string>("Saturn", weathers[1]),
    };
}

Cet article montre comment préparer une application Java Spring existante pour son déploiement sur Azure Spring Apps. S’il est correctement configuré, Azure Spring Apps fournit des services robustes pour monitorer, mettre à l’échelle et mettre à jour votre application Java Spring.

Avant d’exécuter cet exemple, vous pouvez essayer le démarrage rapide de base.

D’autres exemples expliquent comment déployer une application sur Azure Spring Apps quand le fichier POM est configuré.

Cet article explique les dépendances nécessaires et comment les ajouter au fichier POM.

Version du runtime Java

Pour plus d’informations, consultez la section Runtime Java et versions de système d’exploitation du FAQ sur Azure Spring Apps.

Versions de Spring Boot et de Spring Cloud

Pour préparer une application Spring Boot existante pour un déploiement sur Azure Spring Apps, incluez les dépendances Spring Boot et Spring Cloud dans le fichier POM de l’application comme indiqué dans les sections suivantes.

Azure Spring Apps prend en charge la dernière version principale de Spring Boot ou Spring Cloud 30 jours après sa publication. Azure Spring Apps prend en charge la dernière version mineure dès sa publication. Vous pouvez obtenir des versions de Spring Boot prises en charge à partir des Versions Spring Boot et des versions de Spring Cloud à partir de Versions Spring Cloud.

Le tableau ci-dessous liste les combinaisons prises en charges de Spring Boot et Spring Cloud :

Version de Spring Boot Version de Spring Cloud Fin de la prise en charge
3.2.x 2023.0.x également appelée Leyton 2024-11-23
3.1.x 2022.0.3+ également appelée Kilburn 2024-05-18
3.0.x 2022.0.3+ également appelée Kilburn 2023-11-24
2.7.x 2021.0.3+ également appelée Jubilee 2023-11-24

Pour plus d'informations, consultez les pages suivantes :

Pour activer les fonctionnalités intégrées d’Azure Spring Apps à partir du registre de services dans le traçage distribué, vous devez également inclure les dépendances suivantes dans votre application. Vous pouvez supprimer certaines de ces dépendances si vous n’avez pas besoin de fonctionnalités correspondantes pour les applications spécifiques.

Registre de service

Pour utiliser le service managé Azure Service Registry, ajoutez la dépendance spring-cloud-starter-netflix-eureka-client dans le fichier pom.xml, comme indiqué ici :

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

Le point de terminaison du serveur Service Registry est injecté automatiquement sous la forme de variables d’environnement avec votre application. Les applications peuvent s’inscrire sur le serveur Service Registry et découvrir d’autres applications dépendantes.

Annotation EnableDiscoveryClient

Ajoutez l’annotation suivante au code source de l’application.

@EnableDiscoveryClient

Par exemple, regardez l’application piggymetrics provenant des exemples précédents :

package com.piggymetrics.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy

public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

Configuration distribuée

Pour activer la configuration distribuée, ajoutez la dépendance spring-cloud-config-client suivante dans la section des dépendances de votre fichier pom.xml :

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

Avertissement

Ne spécifiez pas spring.cloud.config.enabled=false dans votre configuration de démarrage. Si vous le faites, votre application cessera de fonctionner avec le serveur de configuration.

Métriques

Ajoutez la dépendance spring-boot-starter-actuator dans la section des dépendances de votre fichier pom.xml, comme indiqué ici :

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Les métriques sont tirées (pull) périodiquement des points de terminaison JMX. Vous pouvez visualiser les métriques dans le portail Azure.

Avertissement

Vous devez spécifier spring.jmx.enabled=true dans votre propriété de configuration. Dans le cas contraire, les métriques ne peuvent pas être visualisées dans le portail Azure.

Voir aussi

Étapes suivantes

Dans cet article, vous avez appris à configurer votre application Java Spring pour la déployer sur Azure Spring Apps. Pour savoir comment configurer une instance Config Server, consultez Configurer une instance Config Server.

D’autres exemples sont disponibles sur GitHub : Exemples Azure Spring Apps.