mirror of
https://github.com/chillzhuang/blade-tool
synced 2024-12-12 12:19:27 +08:00
🎉 2.6.2.RELEASE 升级支持seata1.1 支持阿里云oss
This commit is contained in:
parent
fc14d74a44
commit
a53a3d57e6
@ -1,7 +1,7 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://img.shields.io/badge/license-LGPL%20v3-blue.svg" alt="Build Status">
|
<img src="https://img.shields.io/badge/license-LGPL%20v3-blue.svg" alt="Build Status">
|
||||||
<img src="https://img.shields.io/badge/Spring%20Cloud-Hoxton.SR1-blue.svg" alt="Coverage Status">
|
<img src="https://img.shields.io/badge/Spring%20Cloud-Hoxton.SR2-blue.svg" alt="Coverage Status">
|
||||||
<img src="https://img.shields.io/badge/Spring%20Boot-2.2.4.RELEASE-blue.svg" alt="Downloads">
|
<img src="https://img.shields.io/badge/Spring%20Boot-2.2.5.RELEASE-blue.svg" alt="Downloads">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## SpringBlade微服务开发平台
|
## SpringBlade微服务开发平台
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -60,9 +60,6 @@ spring:
|
|||||||
#maximum-pool-size: 5
|
#maximum-pool-size: 5
|
||||||
#max-lifetime: 1800000
|
#max-lifetime: 1800000
|
||||||
#minimum-idle: 1
|
#minimum-idle: 1
|
||||||
devtools:
|
|
||||||
restart:
|
|
||||||
log-condition-evaluation-delta: false
|
|
||||||
|
|
||||||
|
|
||||||
#配置日志地址
|
#配置日志地址
|
||||||
@ -100,7 +97,7 @@ mybatis-plus:
|
|||||||
swagger:
|
swagger:
|
||||||
title: SpringBlade 接口文档系统
|
title: SpringBlade 接口文档系统
|
||||||
description: SpringBlade 接口文档系统
|
description: SpringBlade 接口文档系统
|
||||||
version: 2.6.1
|
version: 2.6.2
|
||||||
license: Powered By SpringBlade
|
license: Powered By SpringBlade
|
||||||
licenseUrl: https://bladex.vip
|
licenseUrl: https://bladex.vip
|
||||||
terms-of-service-url: https://bladex.vip
|
terms-of-service-url: https://bladex.vip
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ import java.util.ArrayList;
|
|||||||
public class BladeFeignAutoConfiguration {
|
public class BladeFeignAutoConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean(Targeter.class)
|
||||||
public Targeter bladeFeignTargeter() {
|
public Targeter bladeFeignTargeter() {
|
||||||
return new BladeHystrixTargeter();
|
return new BladeHystrixTargeter();
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -25,7 +25,7 @@ public interface AppConstant {
|
|||||||
/**
|
/**
|
||||||
* 应用版本
|
* 应用版本
|
||||||
*/
|
*/
|
||||||
String APPLICATION_VERSION = "2.6.1";
|
String APPLICATION_VERSION = "2.6.2";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基础包
|
* 基础包
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@ -27,6 +27,12 @@
|
|||||||
<artifactId>qiniu-java-sdk</artifactId>
|
<artifactId>qiniu-java-sdk</artifactId>
|
||||||
<version>7.2.18</version>
|
<version>7.2.18</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!--alioss-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.aliyun.oss</groupId>
|
||||||
|
<artifactId>aliyun-sdk-oss</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -0,0 +1,283 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com).
|
||||||
|
* <p>
|
||||||
|
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* <p>
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
* <p>
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springblade.core.oss;
|
||||||
|
|
||||||
|
import com.aliyun.oss.OSSClient;
|
||||||
|
import com.aliyun.oss.common.utils.BinaryUtil;
|
||||||
|
import com.aliyun.oss.model.MatchMode;
|
||||||
|
import com.aliyun.oss.model.ObjectMetadata;
|
||||||
|
import com.aliyun.oss.model.PolicyConditions;
|
||||||
|
import com.aliyun.oss.model.PutObjectResult;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import org.springblade.core.oss.model.BladeFile;
|
||||||
|
import org.springblade.core.oss.model.OssFile;
|
||||||
|
import org.springblade.core.oss.props.OssProperties;
|
||||||
|
import org.springblade.core.oss.rule.OssRule;
|
||||||
|
import org.springblade.core.tool.jackson.JsonUtil;
|
||||||
|
import org.springblade.core.tool.utils.StringPool;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AliossTemplate
|
||||||
|
*
|
||||||
|
* @author Chill
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class AliossTemplate {
|
||||||
|
private OSSClient ossClient;
|
||||||
|
private OssProperties ossProperties;
|
||||||
|
private OssRule ossRule;
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public void makeBucket(String bucketName) {
|
||||||
|
if (!bucketExists(bucketName)) {
|
||||||
|
ossClient.createBucket(getBucketName(bucketName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public void removeBucket(String bucketName) {
|
||||||
|
ossClient.deleteBucket(getBucketName(bucketName));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public boolean bucketExists(String bucketName) {
|
||||||
|
return ossClient.doesBucketExist(getBucketName(bucketName));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public void copyFile(String bucketName, String fileName, String destBucketName) {
|
||||||
|
ossClient.copyObject(getBucketName(bucketName), fileName, getBucketName(destBucketName), fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public void copyFile(String bucketName, String fileName, String destBucketName, String destFileName) {
|
||||||
|
ossClient.copyObject(getBucketName(bucketName), fileName, getBucketName(destBucketName), destFileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public OssFile statFile(String fileName) {
|
||||||
|
return statFile(ossProperties.getBucketName(), fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public OssFile statFile(String bucketName, String fileName) {
|
||||||
|
ObjectMetadata stat = ossClient.getObjectMetadata(getBucketName(bucketName), fileName);
|
||||||
|
OssFile ossFile = new OssFile();
|
||||||
|
ossFile.setName(fileName);
|
||||||
|
ossFile.setLink(fileLink(ossFile.getName()));
|
||||||
|
ossFile.setHash(stat.getContentMD5());
|
||||||
|
ossFile.setLength(stat.getContentLength());
|
||||||
|
ossFile.setPutTime(stat.getLastModified());
|
||||||
|
ossFile.setContentType(stat.getContentType());
|
||||||
|
return ossFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public String filePath(String fileName) {
|
||||||
|
return getOssHost().concat(StringPool.SLASH).concat(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public String filePath(String bucketName, String fileName) {
|
||||||
|
return getOssHost(bucketName).concat(StringPool.SLASH).concat(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public String fileLink(String fileName) {
|
||||||
|
return getOssHost().concat(StringPool.SLASH).concat(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public String fileLink(String bucketName, String fileName) {
|
||||||
|
return getOssHost(bucketName).concat(StringPool.SLASH).concat(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件对象
|
||||||
|
*
|
||||||
|
* @param file 上传文件类
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public BladeFile putFile(MultipartFile file) {
|
||||||
|
return putFile(ossProperties.getBucketName(), file.getOriginalFilename(), file);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param fileName 上传文件名
|
||||||
|
* @param file 上传文件类
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public BladeFile putFile(String fileName, MultipartFile file) {
|
||||||
|
return putFile(ossProperties.getBucketName(), fileName, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public BladeFile putFile(String bucketName, String fileName, MultipartFile file) {
|
||||||
|
return putFile(bucketName, fileName, file.getInputStream());
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public BladeFile putFile(String fileName, InputStream stream) {
|
||||||
|
return putFile(ossProperties.getBucketName(), fileName, stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public BladeFile putFile(String bucketName, String fileName, InputStream stream) {
|
||||||
|
return put(bucketName, stream, fileName, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public BladeFile put(String bucketName, InputStream stream, String key, boolean cover) {
|
||||||
|
makeBucket(bucketName);
|
||||||
|
String originalName = key;
|
||||||
|
key = getFileName(key);
|
||||||
|
// 覆盖上传
|
||||||
|
if (cover) {
|
||||||
|
ossClient.putObject(getBucketName(bucketName), key, stream);
|
||||||
|
} else {
|
||||||
|
PutObjectResult response = ossClient.putObject(getBucketName(bucketName), key, stream);
|
||||||
|
int retry = 0;
|
||||||
|
int retryCount = 5;
|
||||||
|
while (StringUtils.isEmpty(response.getETag()) && retry < retryCount) {
|
||||||
|
response = ossClient.putObject(getBucketName(bucketName), key, stream);
|
||||||
|
retry++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BladeFile file = new BladeFile();
|
||||||
|
file.setOriginalName(originalName);
|
||||||
|
file.setName(key);
|
||||||
|
file.setLink(fileLink(bucketName, key));
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public void removeFile(String fileName) {
|
||||||
|
ossClient.deleteObject(getBucketName(), fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public void removeFile(String bucketName, String fileName) {
|
||||||
|
ossClient.deleteObject(getBucketName(bucketName), fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public void removeFiles(List<String> fileNames) {
|
||||||
|
fileNames.forEach(this::removeFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public void removeFiles(String bucketName, List<String> fileNames) {
|
||||||
|
fileNames.forEach(fileName -> removeFile(getBucketName(bucketName), fileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据规则生成存储桶名称规则
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
private String getBucketName() {
|
||||||
|
return getBucketName(ossProperties.getBucketName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据规则生成存储桶名称规则
|
||||||
|
*
|
||||||
|
* @param bucketName 存储桶名称
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
private String getBucketName(String bucketName) {
|
||||||
|
return ossRule.bucketName(bucketName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据规则生成文件名称规则
|
||||||
|
*
|
||||||
|
* @param originalFilename 原始文件名
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private String getFileName(String originalFilename) {
|
||||||
|
return ossRule.fileName(originalFilename);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUploadToken() {
|
||||||
|
return getUploadToken(ossProperties.getBucketName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO 过期时间
|
||||||
|
* <p>
|
||||||
|
* 获取上传凭证,普通上传
|
||||||
|
*/
|
||||||
|
public String getUploadToken(String bucketName) {
|
||||||
|
// 默认过期时间2小时
|
||||||
|
return getUploadToken(bucketName, ossProperties.getArgs().get("expireTime", 3600L));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO 上传大小限制、基础路径
|
||||||
|
* <p>
|
||||||
|
* 获取上传凭证,普通上传
|
||||||
|
*/
|
||||||
|
public String getUploadToken(String bucketName, long expireTime) {
|
||||||
|
String baseDir = "upload";
|
||||||
|
|
||||||
|
long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
|
||||||
|
Date expiration = new Date(expireEndTime);
|
||||||
|
|
||||||
|
PolicyConditions policyConds = new PolicyConditions();
|
||||||
|
// 默认大小限制10M
|
||||||
|
policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, ossProperties.getArgs().get("contentLengthRange", 10485760));
|
||||||
|
policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, baseDir);
|
||||||
|
|
||||||
|
String postPolicy = ossClient.generatePostPolicy(expiration, policyConds);
|
||||||
|
byte[] binaryData = postPolicy.getBytes(StandardCharsets.UTF_8);
|
||||||
|
String encodedPolicy = BinaryUtil.toBase64String(binaryData);
|
||||||
|
String postSignature = ossClient.calculatePostSignature(postPolicy);
|
||||||
|
|
||||||
|
Map<String, String> respMap = new LinkedHashMap<>(16);
|
||||||
|
respMap.put("accessid", ossProperties.getAccessKey());
|
||||||
|
respMap.put("policy", encodedPolicy);
|
||||||
|
respMap.put("signature", postSignature);
|
||||||
|
respMap.put("dir", baseDir);
|
||||||
|
respMap.put("host", getOssHost(bucketName));
|
||||||
|
respMap.put("expire", String.valueOf(expireEndTime / 1000));
|
||||||
|
return JsonUtil.toJson(respMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOssHost(String bucketName) {
|
||||||
|
String prefix = ossProperties.getEndpoint().contains("https://") ? "https://" : "http://";
|
||||||
|
return prefix + getBucketName(bucketName) + StringPool.DOT + ossProperties.getEndpoint().replaceFirst(prefix, StringPool.EMPTY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOssHost() {
|
||||||
|
return getOssHost(ossProperties.getBucketName());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com).
|
||||||
|
* <p>
|
||||||
|
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* <p>
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
* <p>
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springblade.core.oss.config;
|
||||||
|
|
||||||
|
import com.aliyun.oss.ClientConfiguration;
|
||||||
|
import com.aliyun.oss.OSSClient;
|
||||||
|
import com.aliyun.oss.common.auth.CredentialsProvider;
|
||||||
|
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.springblade.core.oss.AliossTemplate;
|
||||||
|
import org.springblade.core.oss.props.OssProperties;
|
||||||
|
import org.springblade.core.oss.rule.BladeOssRule;
|
||||||
|
import org.springblade.core.oss.rule.OssRule;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Alioss配置类
|
||||||
|
*
|
||||||
|
* @author Chill
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@AllArgsConstructor
|
||||||
|
@AutoConfigureAfter(QiniuConfiguration.class)
|
||||||
|
@EnableConfigurationProperties(OssProperties.class)
|
||||||
|
@ConditionalOnProperty(value = "oss.name", havingValue = "alioss")
|
||||||
|
public class AliossConfiguration {
|
||||||
|
|
||||||
|
private OssProperties ossProperties;
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean(OssRule.class)
|
||||||
|
public OssRule ossRule() {
|
||||||
|
return new BladeOssRule();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean(OSSClient.class)
|
||||||
|
public OSSClient ossClient() {
|
||||||
|
// 创建ClientConfiguration。ClientConfiguration是OSSClient的配置类,可配置代理、连接超时、最大连接数等参数。
|
||||||
|
ClientConfiguration conf = new ClientConfiguration();
|
||||||
|
// 设置OSSClient允许打开的最大HTTP连接数,默认为1024个。
|
||||||
|
conf.setMaxConnections(1024);
|
||||||
|
// 设置Socket层传输数据的超时时间,默认为50000毫秒。
|
||||||
|
conf.setSocketTimeout(50000);
|
||||||
|
// 设置建立连接的超时时间,默认为50000毫秒。
|
||||||
|
conf.setConnectionTimeout(50000);
|
||||||
|
// 设置从连接池中获取连接的超时时间(单位:毫秒),默认不超时。
|
||||||
|
conf.setConnectionRequestTimeout(1000);
|
||||||
|
// 设置连接空闲超时时间。超时则关闭连接,默认为60000毫秒。
|
||||||
|
conf.setIdleConnectionTime(60000);
|
||||||
|
// 设置失败请求重试次数,默认为3次。
|
||||||
|
conf.setMaxErrorRetry(5);
|
||||||
|
CredentialsProvider credentialsProvider = new DefaultCredentialProvider(ossProperties.getAccessKey(), ossProperties.getSecretKey());
|
||||||
|
return new OSSClient(ossProperties.getEndpoint(), credentialsProvider, conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean(AliossTemplate.class)
|
||||||
|
@ConditionalOnBean({OSSClient.class, OssRule.class})
|
||||||
|
public AliossTemplate aliossTemplate(OSSClient ossClient, OssRule ossRule) {
|
||||||
|
return new AliossTemplate(ossClient, ossProperties, ossRule);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -39,8 +39,8 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
@Configuration
|
@Configuration
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@EnableConfigurationProperties(OssProperties.class)
|
@EnableConfigurationProperties(OssProperties.class)
|
||||||
@ConditionalOnProperty(value = "oss.enable", havingValue = "true")
|
@ConditionalOnProperty(value = "oss.name", havingValue = "qiniu")
|
||||||
public class OssConfiguration {
|
public class QiniuConfiguration {
|
||||||
|
|
||||||
private OssProperties ossProperties;
|
private OssProperties ossProperties;
|
||||||
|
|
@ -32,4 +32,8 @@ public class BladeFile {
|
|||||||
* 文件名
|
* 文件名
|
||||||
*/
|
*/
|
||||||
private String name;
|
private String name;
|
||||||
|
/**
|
||||||
|
* 原始文件名
|
||||||
|
*/
|
||||||
|
private String originalName;
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
package org.springblade.core.oss.props;
|
package org.springblade.core.oss.props;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.springblade.core.tool.support.Kv;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -62,4 +63,9 @@ public class OssProperties {
|
|||||||
*/
|
*/
|
||||||
private String bucketName = "bladex";
|
private String bucketName = "bladex";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义属性
|
||||||
|
*/
|
||||||
|
private Kv args;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -55,7 +55,7 @@ public class SwaggerProperties {
|
|||||||
/**
|
/**
|
||||||
* 版本
|
* 版本
|
||||||
**/
|
**/
|
||||||
private String version = "2.6.1";
|
private String version = "2.6.2";
|
||||||
/**
|
/**
|
||||||
* 许可证
|
* 许可证
|
||||||
**/
|
**/
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@ -31,6 +31,11 @@
|
|||||||
<artifactId>spring-cloud-alibaba-seata</artifactId>
|
<artifactId>spring-cloud-alibaba-seata</artifactId>
|
||||||
<version>${alibaba.cloud.version}</version>
|
<version>${alibaba.cloud.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.seata</groupId>
|
||||||
|
<artifactId>seata-spring-boot-starter</artifactId>
|
||||||
|
<version>${alibaba.seata.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -15,21 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.springblade.core.transaction.config;
|
package org.springblade.core.transaction.config;
|
||||||
|
|
||||||
import com.alibaba.druid.pool.DruidDataSource;
|
|
||||||
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
|
||||||
import io.seata.rm.datasource.DataSourceProxy;
|
|
||||||
import io.seata.spring.boot.autoconfigure.util.SpringUtils;
|
|
||||||
import org.apache.ibatis.session.SqlSessionFactory;
|
|
||||||
import org.mybatis.spring.SqlSessionTemplate;
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.Primary;
|
|
||||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
|
||||||
import org.springframework.core.io.support.ResourcePatternResolver;
|
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分布式事务数据源配置
|
* 分布式事务数据源配置
|
||||||
@ -39,48 +25,4 @@ import javax.sql.DataSource;
|
|||||||
@Configuration
|
@Configuration
|
||||||
public class DataSourceConfiguration {
|
public class DataSourceConfiguration {
|
||||||
|
|
||||||
@Bean(name = "sqlSessionFactory")
|
|
||||||
public SqlSessionFactory sqlSessionFactoryBean(DataSourceProxy dataSourceProxy) throws Exception {
|
|
||||||
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
|
|
||||||
bean.setDataSource(dataSourceProxy);
|
|
||||||
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
|
|
||||||
bean.setMapperLocations(resolver.getResources("classpath:org/springblade/**/mapper/*Mapper.xml"));
|
|
||||||
SqlSessionFactory factory;
|
|
||||||
try {
|
|
||||||
factory = bean.getObject();
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
return factory;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
|
|
||||||
return new SqlSessionTemplate(sqlSessionFactory);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 从配置文件获取属性构造datasource
|
|
||||||
*/
|
|
||||||
@Bean
|
|
||||||
@ConfigurationProperties(prefix = "spring.datasource")
|
|
||||||
public DruidDataSource druidDataSource() {
|
|
||||||
return new DruidDataSource();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 构造datasource代理对象
|
|
||||||
*/
|
|
||||||
@Primary
|
|
||||||
@Bean("dataSource")
|
|
||||||
public DataSourceProxy dataSourceProxy(DataSource druidDataSource) {
|
|
||||||
return new DataSourceProxy(druidDataSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnMissingBean(SpringUtils.class)
|
|
||||||
public SpringUtils springUtils() {
|
|
||||||
return new SpringUtils();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
10
pom.xml
10
pom.xml
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
<groupId>org.springblade</groupId>
|
<groupId>org.springblade</groupId>
|
||||||
<artifactId>blade-tool</artifactId>
|
<artifactId>blade-tool</artifactId>
|
||||||
<version>2.6.1</version>
|
<version>2.6.2</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>blade-tool</name>
|
<name>blade-tool</name>
|
||||||
<description>
|
<description>
|
||||||
@ -36,7 +36,7 @@
|
|||||||
</scm>
|
</scm>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<blade.tool.version>2.6.1</blade.tool.version>
|
<blade.tool.version>2.6.2</blade.tool.version>
|
||||||
|
|
||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
<maven.plugin.version>3.8.0</maven.plugin.version>
|
<maven.plugin.version>3.8.0</maven.plugin.version>
|
||||||
@ -49,10 +49,10 @@
|
|||||||
<spring.boot.admin.version>2.2.2</spring.boot.admin.version>
|
<spring.boot.admin.version>2.2.2</spring.boot.admin.version>
|
||||||
<mica.auto.version>1.1.0</mica.auto.version>
|
<mica.auto.version>1.1.0</mica.auto.version>
|
||||||
<alibaba.cloud.version>2.2.0.RELEASE</alibaba.cloud.version>
|
<alibaba.cloud.version>2.2.0.RELEASE</alibaba.cloud.version>
|
||||||
<alibaba.seata.version>1.0.0</alibaba.seata.version>
|
<alibaba.seata.version>1.1.0</alibaba.seata.version>
|
||||||
|
|
||||||
<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
|
<spring.boot.version>2.2.5.RELEASE</spring.boot.version>
|
||||||
<spring.cloud.version>Hoxton.SR1</spring.cloud.version>
|
<spring.cloud.version>Hoxton.SR2</spring.cloud.version>
|
||||||
<spring.platform.version>Cairo-SR8</spring.platform.version>
|
<spring.platform.version>Cairo-SR8</spring.platform.version>
|
||||||
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
Loading…
Reference in New Issue
Block a user