opcooc-storage

opcooc-storage simple object storage client

License

License

GroupId

GroupId

com.opcooc
ArtifactId

ArtifactId

opcooc-storage-core
Last Version

Last Version

1.1.1
Release Date

Release Date

Type

Type

pom.sha512
Description

Description

opcooc-storage
opcooc-storage simple object storage client

Download opcooc-storage-core

Dependencies

runtime (12)

Group / Artifact Type Version
org.springframework.boot : spring-boot-starter-aop jar 2.3.3.RELEASE
org.springframework.boot : spring-boot-starter-web jar 2.3.3.RELEASE
com.fasterxml.jackson.core : jackson-databind jar 2.11.2
com.fasterxml.jackson.dataformat : jackson-dataformat-cbor jar 2.11.2
commons-codec : commons-codec jar 1.14
commons-logging : commons-logging jar 1.2
net.bytebuddy : byte-buddy jar 1.10.14
org.apache.httpcomponents : httpclient jar 4.5.12
org.slf4j : slf4j-api jar 1.7.30
cn.hutool : hutool-core jar 5.2.1
com.amazonaws : aws-java-sdk-s3 jar 1.11.848
org.apache.tika : tika-core jar 1.24.1

Project Modules

There are no modules declared in this project.

opcooc-storage-logo

opcooc-storage-boot-starter是一个基于aws s3快速集成多storage client的启动器

maven license JDK Docs gitee star github star gitter

aws-s3 tencent-cos minio aliyun-oss qiliu

  • QQ交流群 789585778,可获取各项目详细图文文档、疑问解答

文档 | Documentation

CN doc EN doc

特性

  1. 支持 多客户端动态切换 (使用内置的spel动态参数,session,header获取客户端驱动, 还支持支持自定义获取哦)。
  2. 支持客户端敏感配置信息 加密 ENC(), DecryptCallback(自定义解密回调)。
  3. 支持 自定义注解 ,需继承OS(支撑多客户端动态切换的关键)。
  4. 提供 自定义客户端驱动来源 方案。
  5. 提供项目启动后 动态增加移除客户端驱动 方案(增加移除后会有Event消息通知)。
  6. 支持 多层客户端嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)。
  7. 提供基于Spring的客户端驱动 健康检查
  8. 提供 bucketConverter bucketName 自定义转换器(有自动创建bucketName判断,会通过环境变量判断)。
  9. 提供 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'
  • 添加配置,在 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

参与贡献

  1. Fork 本项目
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

License

opcooc-storage is under the Apache 2.0 license. See the Apache License 2.0 file for details.

Versions

Version
1.1.1
1.1.0
1.0.0
0.0.1