opcooc-storage-boot-starter是一个基于aws s3快速集成多storage client的启动器
文档 | Documentation
特性
- 支持 多客户端动态切换 (使用内置的spel动态参数,session,header获取客户端驱动, 还支持支持自定义获取哦)。
- 支持客户端敏感配置信息 加密 ENC(), DecryptCallback(自定义解密回调)。
- 支持 自定义注解 ,需继承OS(支撑多客户端动态切换的关键)。
- 提供 自定义客户端驱动来源 方案。
- 提供项目启动后 动态增加移除客户端驱动 方案(增加移除后会有Event消息通知)。
- 支持 多层客户端嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)。
- 提供基于Spring的客户端驱动 健康检查。
- 提供 bucketConverter bucketName 自定义转换器(有自动创建bucketName判断,会通过环境变量判断)。
- 提供 objectConverter objectName 自定义转换器。
快速开始
-
引用依赖
- Maven:
<dependency> <groupId>com.opcooc</groupId> <artifactId>opcooc-storage-boot-starter</artifactId> <version>1.2.3</version> </dependency>
- Gradle
compile group: 'com.opcooc', name: 'opcooc-storage-boot-starter', version: '1.2.3'
- Maven:
-
添加配置,在
application.yml
中添加配置配置信息spring: storage: dynamic: primary: s3_minio #设置默认的客户端驱动,默认值即为s3_minio strict: true #设置严格模式,默认false不启动. 启动后在未匹配到指定客户端驱动时候会抛出异常,不启动则使用默认客户端驱动. enabled: true driver: s3_minio: bucket-name: opcooc end-point: http://minio.xxx.com access-key: xxx secret-key: xxx path-style: true region: s3_minio auto-create-bucket: true # 是否自动创建bucketName,使用请查看详细文档 s3_enc: bucket-name: opcooc end-point: ENC(xxx) # 内置加密,使用请查看详细文档 access-key: ENC(xxx) secret-key: ENC(xxx) path-style: true region: s3_enc public-key: xxx s3_callback: bucket-name: opcooc end-point: xxx access-key: xxx secret-key: xxx path-style: true region: s3_callback public-key: xxx // decrypt-callback-className: com.example.demo.config.DemoDecryptCallback # 自定义加密,使用请查看详细文档 auto-create-bucket: true s3_oss: bucket-name: opcooc end-point: http://oss-cn-shanghai.aliyuncs.com access-key: xxx secret-key: xxx path-style: false region: s3_oss auto-create-bucket: true s3_cos: bucket-name: opcooc end-point: https://bucketname.cos.ap-shanghai.myqcloud.com access-key: xxx secret-key: xxx path-style: true region: s3_cos auto-create-bucket: true s3_kodo: bucket-name: opcooc end-point: http://s3-cn-south-1.qiniucs.com access-key: xxx secret-key: xxx path-style: true region: s3_kodo auto-create-bucket: true
-
健康检查yaml配置。
spring: storage: dynamic: health: true #健康检查 management: endpoints: web: exposure: include: "*" endpoint: health: show-details: always
-
使用 @OS 切换客户端驱动。
@OS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。
注解 结果 没有@OS 默认客户端驱动 @OS("driverName") driverName为具体某个客户端驱动的名称 -
然后就开始玩耍吧~
@RestController @AllArgsConstructor @RequestMapping("/api") @Api("api测试") @OS("#tenantName") public class ClientController { private final StorageClient client; @GetMapping("/createFolder") @ApiOperation("创建文件夹") @OS("#tenantName") 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 | 地域或者数据中心 |
AccessKey | AccessKeyId和AccessKeySecret的统称,访问密钥 |
Object Meta | 文件元信息。用来描述文件信息,例如长度,类型等 |
Data | 文件数据 |
Key | 文件名 |
ACL (Access Control List) | 存储空间或者文件的权限 |
该展示只是 opcooc-storage 功能的一小部分。如果您想了解更多信息,请参阅项目demo documentation.
友情链接
鸣谢
Project |
---|
dynamic-datasource-spring-boot-starter |
参与贡献
- Fork 本项目
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
License
opcooc-storage is under the Apache 2.0 license. See the Apache License 2.0 file for details.