可能是全网最详细的 Spring Boot 整合 MinIO 教程
介绍
本教程将带领读者了解 Spring Boot 如何与 MinIO 对象存储进行整合。我们将使用 Spring Boot 的官方框架 spring-boot-starter-web
、spring-boot-starter-test
,以及本文作者写的 minio-spring-boot-starter
模块。将在 Spring Boot 项目中使用 MinIO 服务进行文件上传、下载、删除等操作。
准备
下载 MinIO
MinIO 是一个针对对象存储使用场景的分布式存储系统,可以非常容易地在本地机器上进行部署。在本文中,我们将使用 MinIO 的 Docker 容器版本进行演示。
docker run -p 9000:9000 minio/minio server /data
执行完该命令后,MinIO 服务就会在本地启动,并映射到 9000 端口。
引入依赖
在 pom.xml
中添加以下依赖:
<dependency>
<groupId>com.github.zhangquanli.spring</groupId>
<artifactId>minio-spring-boot-starter</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
使用
配置 MinIO 参数
在 application.yml
中添加 MinIO 相关的参数,如下:
spring:
minio:
endpoint: http://localhost:9000
access-key: minio
secret-key: minio123
secure: false
bucket-name: my-bucket
以上配置中,我们指定了 MinIO 服务的 endpoint
、访问密钥和安全密钥,同时指定了我们将要使用的存储桶名字。
声明 MinioTemplate
在需要使用 MinIO 的代码中,注入 MinioTemplate
Bean:
@Autowired
private MinioTemplate minioTemplate;
上传文件
使用以下代码进行文件上传:
// 上传字节数组
byte[] bytes = "Hello, MinIO!".getBytes();
String objectName = "hello.txt";
minioTemplate.putObject(bytes, objectName);
// 上传文件
File file = new File("/path/to/file");
minioTemplate.putObject(file, objectName);
// 上传流
ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
minioTemplate.putObject(inputStream, objectName);
下载文件
使用以下代码进行文件下载:
// 下载字节数组
byte[] bytes = minioTemplate.getObjectBytes(objectName);
// 下载文件
File file = new File("/path/to/file");
minioTemplate.getObject(file, objectName);
// 下载流
InputStream inputStream = minioTemplate.getObjectStream(objectName);
删除文件
使用以下代码进行文件删除:
minioTemplate.removeObject(objectName);
示例
示例1:文件上传并验证
@SpringBootTest
class MinioTemplateTests {
@Autowired
private MinioTemplate minioTemplate;
@Test
void testPutObject() throws Exception {
byte[] bytes = "Hello, MinIO!".getBytes();
String objectName = "hello.txt";
minioTemplate.putObject(bytes, objectName);
boolean exists = minioTemplate.objectExists(objectName);
assertTrue(exists);
byte[] actual = minioTemplate.getObjectBytes(objectName);
assertArrayEquals(bytes, actual);
}
}
示例2:文件上传、下载和删除
@SpringBootTest
class MinioTemplateTests {
@Autowired
private MinioTemplate minioTemplate;
@Test
void testPutObject() throws Exception {
byte[] bytes = "Hello, MinIO!".getBytes();
String objectName = "hello.txt";
minioTemplate.putObject(bytes, objectName);
File downloadFile = new File("/tmp/hello.txt");
minioTemplate.getObject(downloadFile, objectName);
assertTrue(downloadFile.exists());
minioTemplate.removeObject(objectName);
boolean exists = minioTemplate.objectExists(objectName);
assertFalse(exists);
}
}
结论
本文介绍了如何在 Spring Boot 中整合 MinIO 对象存储。使用作者提供的 minio-spring-boot-starter
模块,可以很容易地实现 Spring Boot 对 MinIO 的支持。
以上就是可能是全网最详细的 Spring Boot 整合 MinIO 教程。希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:可能是全网最详细的springboot整合minio教程 - Python技术站