Todos os produtos
Search
Central de documentação

Enterprise Distributed Application Service:Integrar o OSS a uma aplicação Spring Cloud no EDAS

Última atualização: Jul 10, 2026

Crie uma aplicação Spring Cloud que faz upload, download e leitura de arquivos no Object Storage Service (OSS) e implante-a no Enterprise Distributed Application Service (EDAS) sem modificar o código ou a configuração.

Por que usar o OSS

OSSOSS é desenvolvido pela Alibaba Cloud para oferecer serviços de armazenamento seguros, econômicos e altamente confiáveis. Com ele, você armazena grandes volumes de dados na nuvem. O OSS disponibiliza operações RESTful API independentes de plataforma, permitindo armazenar e acessar todos os tipos de dados em aplicações desenvolvidas com Spring Cloud.

Pré-requisitos

Antes de começar, verifique se você tem:

Como funciona

O Spring Cloud AliCloud OSS integra aplicações Spring Cloud ao Alibaba Cloud OSS. Após adicionar a dependência do starter e configurar suas credenciais, você pode:

  • Injetar um cliente OSS diretamente nos seus Spring beans

  • Acessar objetos OSS como instâncias Spring Resource usando @Value("oss://...")

  • Implantar a mesma aplicação no EDAS sem modificar o código ou a configuração

Configurar o projeto Maven

  1. Crie um projeto Maven chamado oss-example.

  2. Adicione as seguintes dependências ao pom.xml:

    O Spring Boot 1.x chegou ao fim do ciclo de vida. Se for necessário usar o Spring Boot 1.x, use a versão 1.5.x com Spring Cloud Edgware e 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. Crie um pacote chamado spring.cloud.alicloud.oss em src/main/java.

Criar o ponto de entrada da aplicação

Crie a classe de inicialização OssApplication no pacote spring.cloud.alicloud.oss. Ao iniciar, ela verifica se o bucket de destino existe e o cria, se necessário.

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

Adicionar um arquivo de exemplo

Crie um arquivo chamado oss-test.json em src/main/resources:

{
  "name": "oss-test"
}

Criar o controlador REST

Crie o OssController no pacote spring.cloud.alicloud.oss. Esse controlador expõe três endpoints para upload, download e leitura de arquivos por meio da 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();
        }
    }
}

Resumo dos endpoints:

EndpointMétodoDescrição
/uploadGETFaz upload de oss-test.json do classpath para o seu bucket do OSS
/file-resourceGETLê o arquivo do OSS pela abstração Resource do Spring (@Value("oss://..."))
/downloadGETRecupera o arquivo diretamente pelo cliente OSS

Configurar credenciais e endpoint

  1. Obtenha seu AccessKey ID e AccessKey secret na página Security Management.

  2. Obtenha o endpoint para a região do seu bucket. Consulte Regiões e endpoints.

  3. Crie o arquivo application.properties em src/main/resources e substitua os seguintes espaços reservados pelos valores reais:

    Espaço reservadoDescriçãoExemplo
    <your-access-key>AccessKey IDLTAI5tXxx
    <your-secret-key>AccessKey secretxXxXxXx
    <your-endpoint>Prefixo do endpoint regionaloss-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=*

Verificar o resultado

  1. Execute o método main do OssApplication para iniciar o serviço.

  2. Abra http://127.0.0.1:18084/upload no seu navegador. Se a mensagem upload success aparecer, o arquivo foi carregado com sucesso.

  3. Verifique no console do OSS: acesse o seu bucket, clique em Files no painel de navegação à esquerda e confirme que oss-test.json aparece na lista de arquivos.

  4. Abra http://127.0.0.1:18084/download para fazer o download do arquivo. O resultado esperado é:

       {
         "name": "oss-test"
       }
  5. Abra http://127.0.0.1:18084/file-resource para ler o arquivo pela interface Spring Resource. O resultado esperado é:

       {
         "name": "oss-test"
       }

Se alguma etapa falhar, verifique os logs do console em busca de erros, corrija o problema e reinicie a aplicação.

Implantar no EDAS

O Spring Cloud AliCloud OSS foi desenvolvido para atender às necessidades de migração de aplicações dos ambientes de desenvolvimento originais para o EDAS. Implante sua aplicação sem modificar o código ou a configuração.

Para as etapas de implantação, consulte:

Referência de configuração

PropriedadeDescriçãoExemplo
spring.cloud.alicloud.access-keyAccessKey ID para autenticaçãoLTAI5tXxx
spring.cloud.alicloud.secret-keyAccessKey secret para autenticaçãoxXxXxXx
spring.cloud.alicloud.oss.endpointEndpoint regional do OSSoss-cn-hangzhou.aliyuncs.com
server.portPorta da aplicação18084
spring.application.nameNome da aplicação Springoss-example

Próximas etapas