opcooc-storage-spring-boot-starter 是一个基于aws s3快速集成多storage client的启动器
文档 | Documentation
特性
- 支持 多客户端动态切换 (使用内置的spel动态参数,session,header获取客户端驱动, 还支持支持自定义获取哦)。
- 支持 自定义注解 ,需继承OS(支撑多客户端动态切换的关键)。
- 提供 自定义客户端驱动来源 方案。
- 提供项目启动后 动态增加移除客户端驱动 方案(增加移除后会有Event消息通知)。
- 支持 多层客户端嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)。
- 提供 bucketConverter bucketName 自定义转换器(有自动创建bucketName判断,会通过环境变量判断)。
- 提供 objectConverter objectName 自定义转换器。
- 支持 aws s3, 阿里云oss, minio, 腾讯云cos, 七牛云kodo 等。
快速开始
- 引用依赖
- Maven:
<dependency> <groupId>com.opcooc</groupId> <artifactId>opcooc-storage-spring-boot-starter</artifactId> <version>1.1.5</version> </dependency>
- Gradle
implementation 'com.opcooc:opcooc-storage-spring-boot-starter:1.1.5'
- Maven:
application.yml
中添加配置信息
添加配置,在 -
基础yaml配置。
opcooc: storage: dynamic: primary: s3_minio #默认的客户端类型 strict: true #是否启用严格模式,默认不启动. 严格模式下未匹配到客户端直接报错, 非严格模式下则使用默认客户端primary所设置的客户端 enabled: true #是否开启 opcooc-storage driver: s3_minio: #配置文件key名称 driver: s3_minio #非必填, 客户端驱动名称唯一标识 (默认为配置文件key名称) type: S3 #默认驱动类型(默认为S3) default-bucket: opcooc #默认主目录(需要保证唯一) endpoint: http://xxx.com #访问域名 username: xxx #账号 password: xxx #密码 region: cn-north-1 #区域 path-style: true #路径样式(默认为true) auto-create-bucket: true #是否自动创建目标bucket
-
拓展自定义客户端yaml配置。
opcooc: storage: dynamic: primary: s3_minio #默认的客户端类型 strict: true #是否启用严格模式,默认不启动. 严格模式下未匹配到客户端直接报错, 非严格模式下则使用默认客户端primary所设置的客户端 enabled: true #是否开启 opcooc-storage driver: s3_customize_client_driver: driver: s3_customize_client_client default-bucket: opcooc endpoint: http://xxx.com username: xxx password: xxx region: cn-north-1 custom-client: com.example.demo.config.DemoClient #自定义客户端clazz auto-create-bucket: true
-
其他yaml配置(oss, cos, kodo)。
opcooc: storage: dynamic: primary: s3_minio #默认的客户端类型 strict: true #是否启用严格模式,默认不启动. 严格模式下未匹配到客户端直接报错, 非严格模式下则使用默认客户端primary所设置的客户端 enabled: true #是否开启 opcooc-storage driver: s3_oss: driver: s3_oss default-bucket: opcooc endpoint: http://oss-cn-shanghai.aliyuncs.com username: xxx password: xxx path-style: false region: cn-north-1 auto-create-bucket: true s3_cos: driver: s3_cos default-bucket: opcooc endpoint: https://bucketname.cos.ap-shanghai.myqcloud.com username: xxx password: xxx region: cn-north-1 auto-create-bucket: true s3_kodo: driver: s3_kodo default-bucket: opcooc endpoint: http://s3-cn-south-1.qiniucs.com username: xxx password: xxx region: cn-north-1 auto-create-bucket: true
-
使用 @OS 切换客户端驱动。
@OS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。
注解 结果 没有@OS 默认客户端驱动 @OS("driverName") driverName为具体某个客户端驱动的名称 -
然后就开始玩耍吧~
@RestController @OS("#tenantName") @RequestMapping("/api") @RequiredArgsConstructor public class ClientController { private final StorageClient client; @OS("#tenantName") @PostMapping("/createFolder") public void createFolder(@RequestParam(defaultValue = "s3_minio") String tenantName, @RequestParam String folderName) { client.createFolder(SetFolderArgs.builder().bucketName(BUCKET_NAME).folderName(folderName).build()); } }
术语表
对象存储 | 文件系统 |
---|---|
Object | 对象或者文件 |
Bucket | 主目录(存储空间) |
Endpoint | 访问域名 |
Region | 地域或者数据中心 |
Object Meta | 文件元信息。用来描述文件信息,例如长度,类型等 |
Data | 文件数据 |
Key | 文件名 |
ACL (Access Control List) | 存储空间或者文件的权限 |
该展示只是 opcooc-storage-spring-boot-starter 功能的一小部分。如果您想了解更多信息,请参阅项目demo项目 或 wiki: documentation.
友情链接
参考项目
Project |
---|
dynamic-datasource-spring-boot-starter |
参与贡献
- Fork 本项目
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
License
opcooc-storage-spring-boot-starter is under the Apache 2.0 license. See the Apache License 2.0 file for details.