趁着无聊,写了一个minio-spring-boot-starter给大家使用

在上一篇文章中我们介绍了如何使用SpringBoot集成minio: 我是怎么做到开源系统中的文件上传等功能的? 但是这个方式还是需要自己去写配置类去配置很多的东西,就在前不久我也写了一篇: 我开源了一款阿里云OSS的spring-boot-starter 再然后我gitee仓库里面的这个项目 的star有点多: SpringBoot+MinIO

最后我之前又发布了如何发布项目到maven中央仓库的教程: 如何发布jar包到maven中央仓库(2024年3月最新版保姆级教程) 在之前我已经教大家使用linux安装了一个minio Linux安装MinIO(图文解说详细版)

因为该有的条件都有了,万事俱备只欠东风,所以我就顺便写了一个minio-spring-boot-starter,并且发布到了maven的中央仓库供大家使用。

maven仓库主页

请使用1.0.0版本

第一步,新建一个SpringBoot项目

SpringBoot入门:如何新建SpringBoot项目(保姆级教程)

第二步,在pom文件里面引入jar包

java 复制代码
<dependency>
    <groupId>io.gitee.wangfugui-ma</groupId>
    <artifactId>minio-spring-boot-starter</artifactId>
    <version>1.0.0</version>
</dependency>

第三步,配置你的minio信息

在yml或者properties文件中配置如下信息

yml 复制代码
minio:
  url: http://120.76.201.118:9000  #对象存储服务的URL
  accessKey: root #Access key账户
  secretKey: 123456.com  #Secret key密码

minio.url

对象存储服务的URL,就是你搭建minio时的url:Linux安装MinIO(图文解说详细版)

minio.accessKey

accessKey,就是我们登录minio控制台的账户,这里我们设置了账户是root

minio.secretKey

相当于你minio的密码,就是我们上面控制台的密码

第四步,使用MinIOTemplate

less 复制代码
    @Autowired
    MinIOTemplate minIOTemplate;

在你的项目中直接使用Autowired注解注入MinIOTemplate 即可使用

第五步,验证是否可以使用

我们编写一个测试方法查询所有的bucket试试

java 复制代码
    @Test
    void contextLoads() {
        System.out.println(minIOTemplate.listBuckets());

    }

可以看到这正是我们web页面看到的几个bucket。

所以,这次相比我们比上次的方式优雅多了,只需要引入minio-spring-boot-starter之后再配置你的minio的信息,这样就可以使用了。

其他方法

  1. createBucket(String bucket): 创建一个新的存储桶。bucket是要创建的存储桶的名称。这个方法没有返回值。

  2. uploadFile(InputStream stream, String bucket, String objectName): 上传一个文件到指定的存储桶。stream是文件的输入流,bucket是存储桶的名称,objectName是文件在存储桶中的名称。这个方法没有返回值。

  3. listBuckets(): 列出所有的存储桶。这个方法返回一个List<String>,包含所有存储桶的名称。

  4. listFiles(String bucket): 列出指定存储桶中的所有文件和目录。bucket是存储桶的名称。这个方法返回一个List<Fileinfo>,每个Fileinfo对象包含一个文件或目录的信息。

  5. download(String bucket, String objectName): 下载指定存储桶中的文件。bucket是存储桶的名称,objectName是文件在存储桶中的名称。这个方法返回一个InputStream,可以用于读取下载的文件。

  6. deleteBucket(String bucket): 删除指定的存储桶。bucket是要删除的存储桶的名称。这个方法没有返回值。

  7. deleteObject(String bucket, String objectName): 删除指定存储桶中的文件。bucket是存储桶的名称,objectName是要删除的文件的名称。这个方法没有返回值。

  8. copyObject(String sourceBucket, String sourceObject, String targetBucket, String targetObject): 复制一个文件到另一个存储桶。sourceBucketsourceObject是源文件的存储桶和名称,targetBuckettargetObject是目标存储桶和名称。这个方法没有返回值。

  9. getObjectInfo(String bucket, String objectName): 获取指定文件的信息。bucket是存储桶的名称,objectName是文件的名称。这个方法返回一个String,包含文件的信息。

  10. getPresignedObjectUrl(String bucketName, String objectName, Integer expires): 生成一个用于HTTP GET请求的预签名URL。bucketNameobjectName是要下载的文件的存储桶和名称,expires是URL的有效期(单位:秒)。这个方法返回一个String,是预签名URL。

  11. listAllFile(): 获取MinIO中所有的文件的信息。这个方法没有入参,返回一个List<Fileinfo>,包含所有文件的信息。

  12. 注意:其中的getMinioClient返回一个MinioClient,这样如果里面的封装好的方法不满足你的需求,可以自己使用MinioClient去编写你的代码,MinioClient是io.minio包下面的,也就是minio自己的类。

后续版本考虑支持

  1. 添加更多丰富的api
相关推荐
RFG20121 小时前
20、详解Dubbo框架:消费方如何动态获取服务提供方地址?【微服务架构入门】
java·人工智能·后端·微服务·云原生·架构·dubbo
TimberWill3 小时前
SpringBoot整合Srping Security实现权限控制
java·spring boot·后端
caol645 小时前
「文颜」家族迎来大幅更新
开源
米羊1216 小时前
Struts 2 漏洞(上)
java·后端·struts
梵得儿SHI6 小时前
Spring Cloud 实战攻坚:企业级用户服务开发(注册登录 + JWT 认证 + 权限控制)
后端·spring·spring cloud·用户注册与登录·jwt无状态认证体系·rbac权限控制·微服务用户中心
无巧不成书02189 小时前
【RN鸿蒙教学|第7课时】表单开发实战:TextInput输入+表单验证+鸿蒙多终端适配
react native·华为·开源·交互·harmonyos
callJJ10 小时前
Spring Bean 生命周期详解——从出生到销毁,结合源码全程追踪
java·后端·spring·bean·八股文
怒放吧德德10 小时前
AsyncTool + SpringBoot:轻量级异步编排最佳实践
java·后端
毅炼10 小时前
Java 集合常见问题总结(1)
java·后端
utmhikari10 小时前
【架构艺术】治理后端稳定性的一些实战经验
java·开发语言·后端·架构·系统架构·稳定性·后端开发