Tous les produits
Search
Centre de documentation

Enterprise Distributed Application Service:Integrate OSS with a Spring Cloud application on EDAS

Dernière mise à jour :Aug 10, 2026

Créez une application Spring Cloud qui téléverse, télécharge et lit des fichiers depuis Object Storage Service (OSS), puis déployez-la sur Enterprise Distributed Application Service (EDAS) sans modifier le code ni la configuration.

Pourquoi utiliser OSS

OSSOSS est un service de stockage sécurisé, économique et hautement fiable développé par Alibaba Cloud. Il vous permet de stocker de grandes quantités de données dans le cloud. OSS propose des opérations d'API RESTful indépendantes de la plateforme, ce qui signifie que vous pouvez stocker et accéder à tous les types de données dans les applications développées avec Spring Cloud.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un compte Alibaba Cloud avec OSS activé

  • Un bucket OSS

  • Une paire de clés AccessKey (AccessKey ID et AccessKey secret) obtenue depuis la page Security Management

  • L'endpoint OSS correspondant à la région de votre bucket (voir Regions and endpoints)

  • JDK 8 ou version ultérieure et Maven installés localement

Fonctionnement

Spring Cloud AliCloud OSS intègre les applications Spring Cloud à Alibaba Cloud OSS. Après avoir ajouté la dépendance starter et configuré vos identifiants, vous pouvez :

  • Injecter un client OSS directement dans vos beans Spring

  • Accéder aux objets OSS en tant qu'instances Spring Resource en utilisant @Value("oss://...")

  • Déployer la même application sur EDAS sans modifier le code ni la configuration

Configurer le projet Maven

  1. Créez un projet Maven nommé oss-example.

  2. Ajoutez les dépendances suivantes au fichier pom.xml :

    Spring Boot 1.x a atteint sa fin de vie. Si vous devez absolument utiliser Spring Boot 1.x, utilisez la version 1.5.x avec Spring Cloud Edgware et Spring Cloud Alibaba 1.5.1.RELEASE.
       <parent>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-parent</artifactId>
           <version>2.1.4.RELEASE</version>
           <relativePath/>
       </parent>
    
       <dependencies>
           <dependency>
               <groupId>com.alibaba.cloud</groupId>
               <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
               <version>2.1.1.RELEASE</version>
           </dependency>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-web</artifactId>
           </dependency>
       </dependencies>
    
       <dependencyManagement>
           <dependencies>
               <dependency>
                   <groupId>org.springframework.cloud</groupId>
                   <artifactId>spring-cloud-dependencies</artifactId>
                   <version>Finchley.SR1</version>
                   <type>pom</type>
                   <scope>import</scope>
               </dependency>
           </dependencies>
       </dependencyManagement>
  3. Créez un package nommé spring.cloud.alicloud.oss sous src/main/java.

Créer le point d'entrée de l'application

Créez la classe de démarrage OssApplication dans le package spring.cloud.alicloud.oss. Au démarrage, cette classe vérifie si le bucket cible existe et le crée si nécessaire.

package spring.cloud.alicloud.oss;

import com.aliyun.oss.OSS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import java.net.URISyntaxException;

@SpringBootApplication
public class OssApplication {

    // Replace with your actual bucket name
    public static final String BUCKET_NAME = "test-bucket";

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

    @Bean
    public AppRunner appRunner() {
        return new AppRunner();
    }

    class AppRunner implements ApplicationRunner {
        @Autowired
        private OSS ossClient;

        @Override
        public void run(ApplicationArguments args) throws Exception {
            try {
                if (!ossClient.doesBucketExist(BUCKET_NAME)) {
                    ossClient.createBucket(BUCKET_NAME);
                }
            } catch (Exception e) {
                System.err.println("oss handle bucket error: " + e.getMessage());
                System.exit(-1);
            }
        }
    }
}

Ajouter un exemple de fichier

Créez un fichier nommé oss-test.json dans src/main/resources :

{
  "name": "oss-test"
}

Créer le contrôleur REST

Créez OssController dans le package spring.cloud.alicloud.oss. Ce contrôleur expose trois endpoints pour le téléversement, le téléchargement et la lecture de fichiers via l'interface Spring Resource.

package spring.cloud.alicloud.oss;

import com.aliyun.oss.OSS;
import com.aliyun.oss.common.utils.IOUtils;
import com.aliyun.oss.model.OSSObject;
import org.apache.commons.codec.CharEncoding;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.nio.charset.Charset;

@RestController
public class OssController {

    @Autowired
    private OSS ossClient;

    // Access an OSS object as a Spring Resource
    @Value("oss://" + OssApplication.BUCKET_NAME + "/oss-test.json")
    private Resource file;

    /**
     * Uploads oss-test.json from the classpath to the OSS bucket.
     */
    @GetMapping("/upload")
    public String upload() {
        try {
            ossClient.putObject(OssApplication.BUCKET_NAME, "oss-test.json", this
                    .getClass().getClassLoader().getResourceAsStream("oss-test.json"));
        } catch (Exception e) {
            e.printStackTrace();
            return "upload fail: " + e.getMessage();
        }
        return "upload success";
    }

    /**
     * Reads the OSS object through the Spring Resource interface.
     */
    @GetMapping("/file-resource")
    public String fileResource() {
        try {
            return "get file resource success. content: " + StreamUtils.copyToString(
                    file.getInputStream(), Charset.forName(CharEncoding.UTF_8));
        } catch (Exception e) {
            e.printStackTrace();
            return "get resource fail: " + e.getMessage();
        }
    }

    /**
     * Downloads the OSS object directly through the OSS client.
     */
    @GetMapping("/download")
    public String download() {
        try {
            OSSObject ossObject = ossClient.getObject(OssApplication.BUCKET_NAME, "oss-test.json");
            return "download success, content: " + IOUtils
                    .readStreamAsString(ossObject.getObjectContent(), CharEncoding.UTF_8);
        } catch (Exception e) {
            e.printStackTrace();
            return "download fail: " + e.getMessage();
        }
    }
}

Résumé des endpoints :

Endpoint Méthode Description
/upload GET Téléverse oss-test.json depuis le classpath vers votre bucket OSS
/file-resource GET Lit le fichier depuis OSS via l'abstraction Resource de Spring (@Value("oss://..."))
/download GET Récupère le fichier directement via le client OSS

Configurer les identifiants et l'endpoint

  1. Obtenez votre AccessKey ID et votre AccessKey secret depuis la page Security Management.

  2. Obtenez l'endpoint correspondant à la région de votre bucket. Voir Regions and endpoints.

  3. Créez le fichier application.properties dans src/main/resources. Remplacez les espaces réservés suivants par vos valeurs réelles :

    Espace réservé Description Exemple
    <your-access-key> AccessKey ID LTAI5tXxx
    <your-secret-key> AccessKey secret xXxXxXx
    <your-endpoint> Préfixe de l'endpoint régional oss-cn-hangzhou
       spring.application.name=oss-example
       server.port=18084
    
       # Replace with your actual credentials and endpoint
       spring.cloud.alicloud.access-key=<your-access-key>
       spring.cloud.alicloud.secret-key=<your-secret-key>
       spring.cloud.alicloud.oss.endpoint=<your-endpoint>.aliyuncs.com
       management.endpoints.web.exposure.include=*

Vérifier le résultat

  1. Exécutez la méthode main de OssApplication pour démarrer le service.

  2. Ouvrez http://127.0.0.1:18084/upload dans votre navigateur. Si le message upload success s'affiche, le fichier a bien été téléversé.

  3. Vérifiez dans la console OSS : accédez à votre bucket, cliquez sur Files dans le volet de navigation de gauche, et confirmez que oss-test.json apparaît dans la liste des fichiers.

  4. Ouvrez http://127.0.0.1:18084/download pour télécharger le fichier. Le résultat attendu est :

       {
         "name": "oss-test"
       }
  5. Ouvrez http://127.0.0.1:18084/file-resource pour lire le fichier via l'interface Spring Resource. Le résultat attendu est :

       {
         "name": "oss-test"
       }

Si une étape échoue, consultez les journaux de la console pour identifier les erreurs, corrigez le problème et redémarrez l'application.

Déployer sur EDAS

Spring Cloud AliCloud OSS est conçu pour répondre aux besoins de migration des applications depuis leurs environnements de développement d'origine vers EDAS. Déployez votre application sans modifier le code ni la configuration.

Pour les étapes de déploiement, voir :

Référence de configuration

Propriété Description Exemple
spring.cloud.alicloud.access-key AccessKey ID pour l'authentification LTAI5tXxx
spring.cloud.alicloud.secret-key AccessKey secret pour l'authentification xXxXxXx
spring.cloud.alicloud.oss.endpoint Endpoint régional OSS oss-cn-hangzhou.aliyuncs.com
server.port Port de l'application 18084
spring.application.name Nom de l'application Spring oss-example

Étapes suivantes