Todos los productos
Search
Centro de documentos

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

Última actualización: Sep 03, 2026

Cree una aplicación Spring Cloud que cargue, descargue y lea archivos desde Object Storage Service (OSS) y, posteriormente, despliéguela en Enterprise Distributed Application Service (EDAS) sin modificar el código ni la configuración.

Ventajas de usar OSS

OSSOSS es un servicio desarrollado por Alibaba Cloud para ofrecer almacenamiento seguro, rentable y altamente confiable. Este servicio permite almacenar grandes volúmenes de datos en la nube. OSS proporciona operaciones de API RESTful independientes de la plataforma, lo que facilita el almacenamiento y acceso a todo tipo de datos en aplicaciones desarrolladas con Spring Cloud.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Funcionamiento

Spring Cloud AliCloud OSS integra las aplicaciones Spring Cloud con Alibaba Cloud OSS. Una vez que agrega la dependencia del starter y configura sus credenciales, puede realizar lo siguiente:

  • Inyectar un cliente OSS directamente en sus beans de Spring

  • Acceder a los objetos de OSS como instancias de Resource de Spring mediante @Value("oss://...")

  • Desplegar la misma aplicación en EDAS sin modificar el código ni la configuración

Configuración del proyecto Maven

  1. Cree un proyecto Maven llamado oss-example.

  2. Agregue las siguientes dependencias al archivo pom.xml:

    Spring Boot 1.x ha llegado al final de su ciclo de vida. Si necesita utilizar Spring Boot 1.x, use la versión 1.5.x junto con Spring Cloud Edgware y 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. Cree un paquete denominado spring.cloud.alicloud.oss dentro de src/main/java.

Creación del punto de entrada de la aplicación

Cree la clase de inicio OssApplication en el paquete spring.cloud.alicloud.oss. Al iniciarse, esta clase comprueba si el bucket de destino existe y lo crea en caso necesario.

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

Adición de un archivo de ejemplo

Cree un archivo llamado oss-test.json en src/main/resources:

{
  "name": "oss-test"
}

Creación del controlador REST

Cree la clase OssController en el paquete spring.cloud.alicloud.oss. Este controlador expone tres endpoints para cargar, descargar y leer archivos a través de la interfaz Resource de Spring.

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

Resumen de endpoints:

Endpoint

Método

Descripción

/upload

GET

Carga oss-test.json desde el classpath hacia su bucket de OSS

/file-resource

GET

Lee el archivo desde OSS mediante la abstracción Resource de Spring (@Value("oss://..."))

/download

GET

Recupera el archivo directamente a través del cliente OSS

Configuración de credenciales y endpoint

  1. Obtenga su AccessKey ID y AccessKey secret en la página de Security Management.

  2. Obtenga el endpoint correspondiente a la región de su bucket. Consulte Regions and endpoints.

  3. Cree el archivo application.properties en src/main/resources: Reemplace los siguientes marcadores de posición con sus valores reales:

    Marcador de posición

    Descripción

    Ejemplo

    <your-access-key>

    AccessKey ID

    LTAI5tXxx

    <your-secret-key>

    AccessKey secret

    xXxXxXx

    <your-endpoint>

    Prefijo del endpoint regional

    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=*

Comprobación del resultado

  1. Ejecute el método main de OssApplication para iniciar el servicio.

  2. Abra http://127.0.0.1:18084/upload en su navegador. Si aparece el mensaje upload success, significa que el archivo se cargó correctamente.

  3. Verifíquelo en la consola de OSS: vaya a su bucket, haga clic en Files en el panel de navegación izquierdo y confirme que oss-test.json aparece en la lista de archivos.

  4. Abra http://127.0.0.1:18084/download para descargar el archivo. La salida esperada es:

       {
         "name": "oss-test"
       }
  5. Abra http://127.0.0.1:18084/file-resource para leer el archivo mediante la interfaz Resource de Spring. La salida esperada es:

       {
         "name": "oss-test"
       }

Si algún paso falla, revise los registros de la consola en busca de errores, corrija el problema y reinicie la aplicación.

Despliegue en EDAS

Spring Cloud AliCloud OSS se diseñó para cubrir la necesidad de migrar aplicaciones desde sus entornos de desarrollo originales hacia EDAS. Despliegue su aplicación sin tener que modificar el código ni la configuración.

Para consultar los pasos de despliegue, consulte:

Referencia de configuración

Propiedad

Descripción

Ejemplo

spring.cloud.alicloud.access-key

AccessKey ID para autenticación

LTAI5tXxx

spring.cloud.alicloud.secret-key

AccessKey secret para autenticación

xXxXxXx

spring.cloud.alicloud.oss.endpoint

Endpoint regional de OSS

oss-cn-hangzhou.aliyuncs.com

server.port

Puerto de la aplicación

18084

spring.application.name

Nombre de la aplicación Spring

oss-example

Pasos siguientes