# minio-spring-boot-starter-demo
**Repository Path**: wangfugui-ma/minio-spring-boot-starter-demo
## Basic Information
- **Project Name**: minio-spring-boot-starter-demo
- **Description**: 使用minio-spring-boot-starter的项目的教程
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2024-04-20
- **Last Updated**: 2025-04-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: minio, 对象存储, SpringBoot
## README
在上一篇文章中我们介绍了如何使用SpringBoot集成minio:
[我是怎么做到开源系统中的文件上传等功能的?](https://blog.csdn.net/csdnerM/article/details/121370125)
但是这个方式还是需要自己去写配置类去配置很多的东西,就在前不久我也写了一篇:
[我开源了一款阿里云OSS的spring-boot-starter](https://juejin.cn/post/7357979741667098658)
再然后我gitee仓库里面的这个项目 的star有点多:
[SpringBoot+MinIO](https://gitee.com/wangfugui-ma/spring-boot-minio)

最后我之前又发布了如何发布项目到maven中央仓库的教程:
[如何发布jar包到maven中央仓库(2024年3月最新版保姆级教程)](https://juejin.cn/post/7347207466818289703)
在之前我已经教大家使用linux安装了一个minio
[Linux安装MinIO(图文解说详细版)](https://blog.csdn.net/csdnerM/article/details/121336618)
因为该有的条件都有了,万事俱备只欠东风,所以我就顺便写了一个`minio-spring-boot-starter`,并且发布到了maven的中央仓库供大家使用。
[maven仓库主页](https://central.sonatype.com/namespace/io.gitee.wangfugui-ma)
> 
请使用`1.0.0`版本
## 第一步,新建一个SpringBoot项目
[SpringBoot入门:如何新建SpringBoot项目(保姆级教程)](https://juejin.cn/post/7350168797637656576)
## 第二步,在pom文件里面引入jar包
```java
io.gitee.wangfugui-ma
minio-spring-boot-starter
1.0.0
```
## 第三步,配置你的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(图文解说详细版)](https://blog.csdn.net/csdnerM/article/details/121336618)
### minio.accessKey
accessKey,就是我们登录minio控制台的账户,这里我们设置了账户是root
> 
### minio.secretKey
相当于你minio的密码,就是我们上面控制台的密码
## 第四步,使用MinIOTemplate
```
@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`,包含所有存储桶的名称。
4. `listFiles(String bucket)`: 列出指定存储桶中的所有文件和目录。`bucket`是存储桶的名称。这个方法返回一个`List`,每个`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)`: 复制一个文件到另一个存储桶。`sourceBucket`和`sourceObject`是源文件的存储桶和名称,`targetBucket`和`targetObject`是目标存储桶和名称。这个方法没有返回值。
9. `getObjectInfo(String bucket, String objectName)`: 获取指定文件的信息。`bucket`是存储桶的名称,`objectName`是文件的名称。这个方法返回一个`String`,包含文件的信息。
10. `getPresignedObjectUrl(String bucketName, String objectName, Integer expires)`: 生成一个用于HTTP GET请求的预签名URL。`bucketName`和`objectName`是要下载的文件的存储桶和名称,`expires`是URL的有效期(单位:秒)。这个方法返回一个`String`,是预签名URL。
11. `listAllFile()`: 获取MinIO中所有的文件的信息。这个方法没有入参,返回一个`List`,包含所有文件的信息。
12. 注意:其中的getMinioClient返回一个`MinioClient`,这样如果里面的封装好的方法不满足你的需求,可以自己使用MinioClient去编写你的代码,MinioClient是`io.minio`包下面的,也就是minio自己的类。
## 后续版本考虑支持
1. 添加更多丰富的api
> 