Parcourir la source

AliyunCdn 和 AliyunOss 中的 client 在第一次使用时才初始化

reghao il y a 3 mois
Parent
commit
f6a9ab2a44

+ 18 - 15
web/src/main/java/cn/reghao/bnt/web/devops/aliyun/service/AliyunCdn.java

@@ -33,19 +33,22 @@ public class AliyunCdn {
         this.aliyunAccountRepository = aliyunAccountRepository;
     }
 
-    @PostConstruct
-    public void initClient() throws Exception {
-        AliyunAccount aliyunAccount = aliyunAccountRepository.findByType("cdn");
-        String endpoint = aliyunAccount.getEndpoint();
-        String accessKeyId = aliyunAccount.getAccessKeyId();
-        String accessKeySecret = aliyunAccount.getAccessKeySecret();
-        Config config = new Config()
-                // 必填,您的 AccessKey ID
-                .setAccessKeyId(accessKeyId)
-                // 必填,您的 AccessKey Secret
-                .setAccessKeySecret(accessKeySecret)
-                .setEndpoint(endpoint);
-        this.client = new Client(config);
+    public Client getClient() throws Exception {
+        if (client == null) {
+            AliyunAccount aliyunAccount = aliyunAccountRepository.findByType("cdn");
+            String endpoint = aliyunAccount.getEndpoint();
+            String accessKeyId = aliyunAccount.getAccessKeyId();
+            String accessKeySecret = aliyunAccount.getAccessKeySecret();
+            Config config = new Config()
+                    // 必填,您的 AccessKey ID
+                    .setAccessKeyId(accessKeyId)
+                    // 必填,您的 AccessKey Secret
+                    .setAccessKeySecret(accessKeySecret)
+                    .setEndpoint(endpoint);
+            client = new Client(config);
+        }
+
+        return client;
     }
 
     public String refreshCdn(String domain) {
@@ -68,7 +71,7 @@ public class AliyunCdn {
         // 加速的文件位置,wdtest.licai.cn为配置的域名,后加加速的文件名
         req.objectPath = objectPath;
         try {
-            RefreshObjectCachesResponse resp = client.refreshObjectCaches(req);
+            RefreshObjectCachesResponse resp = getClient().refreshObjectCaches(req);
             Map<String, Object> map = TeaModel.buildMap(resp);
             Map<String, Object> map1 = (Map<String, Object>)map.get("body");
             String taskId = (String) map1.get("RefreshTaskId");
@@ -96,7 +99,7 @@ public class AliyunCdn {
         DescribeRefreshTasksRequest request = new DescribeRefreshTasksRequest();
         request.taskId = taskId;
         try {
-            DescribeRefreshTasksResponse resp = client.describeRefreshTasks(request);
+            DescribeRefreshTasksResponse resp = getClient().describeRefreshTasks(request);
             Map<String, Object> map = TeaModel.buildMap(resp);
             Map<String, Object> bodyMap = (Map)map.get("body");
             List list = (List) ((Map) bodyMap.get("Tasks")).get("CDNTask");

+ 14 - 13
web/src/main/java/cn/reghao/bnt/web/devops/aliyun/service/AliyunOss.java

@@ -30,20 +30,21 @@ import java.util.List;
 public class AliyunOss {
     private OSS ossClient;
     private final AliyunAccountRepository aliyunAccountRepository;
-    private String bucketName;
 
     public AliyunOss(AliyunAccountRepository aliyunAccountRepository) {
         this.aliyunAccountRepository = aliyunAccountRepository;
-        this.bucketName = "";
     }
 
-    @PostConstruct
-    public void initOssClient() {
-        AliyunAccount aliyunAccount = aliyunAccountRepository.findByType("oss");
-        String endpoint = aliyunAccount.getEndpoint();
-        String accessKeyId = aliyunAccount.getAccessKeyId();
-        String accessKeySecret = aliyunAccount.getAccessKeySecret();
-        this.ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+    public OSS getOssClient() {
+        if (ossClient == null) {
+            AliyunAccount aliyunAccount = aliyunAccountRepository.findByType("oss");
+            String endpoint = aliyunAccount.getEndpoint();
+            String accessKeyId = aliyunAccount.getAccessKeyId();
+            String accessKeySecret = aliyunAccount.getAccessKeySecret();
+            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+        }
+
+        return ossClient;
     }
 
     public void uploadObject(String bucketName, String objectName, File file) throws IOException {
@@ -51,7 +52,7 @@ public class AliyunOss {
         /*ObjectMetadata objectMetadata = new ObjectMetadata();
         objectMetadata.setObjectAcl(CannedAccessControlList.PublicRead);
         putObjectRequest.setMetadata(objectMetadata);*/
-        ossClient.putObject(putObjectRequest);
+        getOssClient().putObject(putObjectRequest);
     }
 
     /**
@@ -147,15 +148,15 @@ public class AliyunOss {
         } while (objectListing.isTruncated());
     }
 
-    public String getSignedUrl(String objectName) {
+    public String getSignedUrl(String bucketName, String objectName) {
         int expireSecond = 3600;
         long timestamp = System.currentTimeMillis() + expireSecond*1000L;
         Date expiration = new Date(timestamp);
-        URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
+        URL url = getOssClient().generatePresignedUrl(bucketName, objectName, expiration);
         return url.toString();
     }
 
     public void close() {
-        ossClient.shutdown();
+        getOssClient().shutdown();
     }
 }

+ 2 - 1
web/src/main/java/cn/reghao/bnt/web/devops/aliyun/service/AliyunService.java

@@ -80,7 +80,8 @@ public class AliyunService {
     }
 
     public String getSignedUrl(String objectName) {
-        String signedUrl = aliyunOss.getSignedUrl(objectName);
+        String bucketName = "";
+        String signedUrl = aliyunOss.getSignedUrl(bucketName, objectName);
         if (signedUrl != null) {
             return signedUrl.replace(ossDomain, myDomain);
         }