Aliyun OSS 是阿里云推出的云存储服务,本文将主要围绕如何制作一个 Aliyun-oss-sdk-spring-boot-starter 展开介绍。
功能分析
- 文件上传
- 获取不同实现类的文件上传配置, 提供前端服使用
- 通用的参数配置, 支持应用选择自己的根目录
配置期望
1 | # 文件默认的访问权限 |
实现步骤
- 定义文件服务API
- 依赖springboot-starter, 实现服务的自动注册
- 依赖 aliyun-oss-sdk, 实现 Ali 文件服务
接下来, 我们看下具体的实现代码, 目前未上传到 GitHub 中, 我们可以看下大致思路.
具体实现
依赖管理
1 | <properties> |
配置管理
访问权限1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21public enum AccessControlEnum {
/**
* 继承基类的权限, 依据实现者的默认实现
*/
DEFAULT,
/**
* 私有访问, 需生成URL才能访问
*/
PRIVATE,
/**
* 公有访问
*/
PUBLIC_READ,
/**
* 可读可写
*/
PUBLIC_READ_WRITE;
}
通用配置
以下代码请自行加入 Getter/Setter 方法, 或者使用 lombok
1 |
|
阿里配置1
2
3
4
5
6
7
8
9
10
11
12
public class AliyunConfig {
private String endpoint;
private String bucket;
private AccessKey accessKey;
public static class AccessKey {
private String id;
private String secret;
}
}
文件服务API
1 | public interface FileService { |
上传服务配置1
2
3
4public interface UploadConfigObj {
String toJson();
}
Aliyun OSS 文件服务实现
1 | public class AliyunFileService implements FileService { |
ali 上传配置文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class AliConfigUploadObj implements UploadConfigObj {
private String accessId;
private String policy;
private String signature;
private String host;
private String expire;
private String dir;
public String toJson() {
return JSONObject.toJSONString(this);
}
}
Spring自动配置
1 |
|
META-INF/spring.factories1
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.zenlayer.oss.file.FileAutoConfiguration