日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

文檔

實現對象存儲

更新時間:

本文檔通過一個示例向您介紹如何在本地Spring Cloud應用中實現對象存儲,并將該應用托管到EDAS中。

為什么使用OSS

OSS是阿里云提供的海量、安全、低成本、高可靠的云存儲服務。具有與平臺無關的RESTful API接口,您可以在Spring Cloud開發的應用中存儲和訪問任意類型的數據。

準備工作

在應用中實現對象存儲功能前,您需要先使用您的阿里云賬號在OSS創建存儲空間。

  1. 開通OSS服務

  2. 控制臺創建存儲空間

在本地實現對象存儲

  1. 創建一個Maven工程,命名為oss-example

  2. pom.xml文件中添加如下依賴。

    以Spring Boot 2.1.4.RELEASE和Spring Cloud Greenwich.SR1為例。

     <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>                        
    說明
    • 如果您需要選擇使用Spring Boot 1.x的版本,請使用Spring Boot 1.5.x和Spring Cloud Edgware版本,對應的Spring Cloud Alibaba版本為1.5.1.RELEASE。

    • Spring Boot 1.x版本的生命周期已結束,推薦使用Spring Boot新版本開發您的應用。

  3. src/main/java下創建一個package,如spring.cloud.alicloud.oss

  4. 在packagespring.cloud.alicloud.oss下創建oss-example的啟動類OssApplication

        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 {
            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);
                    }
                }
            }
        }                        
  5. src/main/resources路徑下再添加一個用于上傳的示例文件oss-test.json

     {
       "name": "oss-test"
     }                        
  6. 在packagespring.cloud.alicloud.oss下創建類OssController并添加配置,包含上傳、下載,以及使用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;
            @Value("oss://" + OssApplication.BUCKET_NAME + "/oss-test.json")
            private Resource file;
            @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";
            }
            @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();
                }
            }
            @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();
                }
            }
        }                        
  7. 獲取AccessKey ID、AccessKey Secret和Endpoint,并在本地添加配置。

    1. 登錄安全信息管理頁面,獲取AccessKey ID和AccessKey Secret。

    2. 按創建存儲空間的地域獲取Endpoint,具體操作,請參見訪問域名和數據中心

    3. src/main/resources路徑下創建application.properties文件,并添加AccessKey ID、AccessKey Secret和Endpoint配置。

      spring.application.name=oss-example
      server.port=18084
      # 填寫 Access Key ID
      spring.cloud.alicloud.access-key=xxxxx
      # 填寫 Access Key Secret
      spring.cloud.alicloud.secret-key=xxxxx
      # 填寫 Endpoint
      spring.cloud.alicloud.oss.endpoint=xxx.aliyuncs.com
      management.endpoints.web.exposure.include=*                                
  8. 執行OssApplication中的main函數,啟動服務。

結果驗證

  1. 在瀏覽器中訪問http://127.0.0.1:18084/upload

    如果提示upload success,則說明示例文件oss-test.json上傳成功。否則,請檢查本地代碼,排查問題,然后再次執行OssApplication中的main函數,啟動服務。

  2. 登錄OSS控制臺,進入您創建并上傳文件的Bucket,然后在左側導航欄單擊文件管理,查看是否有示例文件。

    如果看到oss-test.json,則說明上傳成功。否則,請檢查本地代碼,排查問題,然后再次執行OssApplication中的main函數,啟動服務。

  3. 在瀏覽器訪問http://127.0.0.1:18084/download即可下載文件,會得到oss-test.json的文件內容。

     {
       "name": "oss-test"
     }                        
  4. 在瀏覽器訪問http://127.0.0.1:18084/file-resource即可獲得示例文件oss-test.json的內容。

     {
       "name": "oss-test"
     }                        

部署應用到EDAS

Spring Cloud AliCloud OSS在設計之初就考慮到了從開發環境遷移到EDAS的場景,您可以直接將應用部署到EDAS中,無需修改任何代碼和配置。關于部署方式和詳細步驟的相關內容,請參見創建和部署應用概述(K8s)應用創建和部署概述(ECS)