如何轻松整合Minio到SpringBoot项目中?

2026-04-19 18:364阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计983个文字,预计阅读时间需要4分钟。

如何轻松整合Minio到SpringBoot项目中?

前言:使用Spring Boot可以非常方便、快速地搭建项目,无需关心框架之间的兼容性、适用版本等问题。我们想使用什么功能,只需添加一个配置即可。以下为本章节正文内容:

前言

使用Spring Boot 可以非常方便、快速搭建项目,使我们不用关心框架之间的兼容性,适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以。

提示:以下是本篇文章正文内容,下面案例可供参考

一、技术介绍

1.Minio是什么?

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

二、使用步骤

1.引入maven库

代码如下(示例):

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.1</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.0.3</version> </dependency> </dependencies>

2.封装Minio

IFile类:

package com.hyh.minio; /** * File接口类 * * @Author: heyuhua * @Date: 2021/1/12 10:33 */ public interface IFile { /** * 上传 * * @param filename 文件名 */ void upload(String filename); /** * 上传 * * @param filename 文件名 * @param object 保存对象文件名称 */ void upload(String filename, String object); }

File接口类:

package com.hyh.minio.service; import com.hyh.minio.IFile; /** * File接口 * * @Author: heyuhua * @Date: 2021/1/12 10:53 */ public interface FileService extends IFile { /** * 上传 * * @param filename 文件名称 * @param object 保存对象文件名称 * @param bucket 存储桶 */ void upload(String filename, String object, String bucket); }

File接口实现类:

如何轻松整合Minio到SpringBoot项目中?

package com.hyh.minio.service.impl; import com.hyh.minio.service.FileService; import com.hyh.utils.common.StringUtils; import io.minio.BucketExistsArgs; import io.minio.MakeBucketArgs; import io.minio.MinioClient; import io.minio.UploadObjectArgs; import io.minio.errors.MinioException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; /** * 文件接口服务实现 * * @Author: heyuhua * @Date: 2021/1/12 10:53 */ @Service public class FileServiceImpl implements FileService { /** * 日志 */ private static final Logger LOG = LoggerFactory.getLogger(FileServiceImpl.class); /** * minio 客户端 */ @Autowired private MinioClient minioClient; /** * 默认存储桶名称 */ @Value("${minio.bucketName:}") private String defaultBucketName; @Override public void upload(String filename) { uploadObject(filename, null, defaultBucketName); } @Override public void upload(String filename, String object) { uploadObject(filename, object, defaultBucketName); } @Override public void upload(String filename, String object, String bucket) { uploadObject(filename, object, bucket); } /** * 上传 * * @param filename * @param object * @param bucket */ private void uploadObject(String filename, String object, String bucket) { if (StringUtils.isAnyBlank(filename, bucket)) return; try { //存储桶构建 bucketBuild(bucket); //保存的文件名称 object = StringUtils.isBlank(object) ? filename.substring(filename.lastIndexOf("/") > 0 ? filename.lastIndexOf("/") : filename.lastIndexOf("\\")) : object; minioClient.uploadObject( UploadObjectArgs.builder() .bucket(bucket) .object(object) .filename(filename) .build()); } catch (MinioException | InvalidKeyException | IOException | NoSuchAlgorithmException exception) { LOG.error("uploadObject error", exception); } } /** * 存储桶构建 * * @param bucketName */ private void bucketBuild(String bucketName) { try { boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); if (!found) { minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); LOG.info("Bucket " + bucketName + " make success."); } else { LOG.info("Bucket " + bucketName + " already exists."); } } catch (MinioException | InvalidKeyException | IOException | NoSuchAlgorithmException exception) { LOG.error("bucketBuild error", exception); } } public String getDefaultBucketName() { return defaultBucketName; } public void setDefaultBucketName(String defaultBucketName) { this.defaultBucketName = defaultBucketName; } }

Minio配置类:

package com.hyh.minio.config; import io.minio.MinioClient; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @Author: heyuhua * @Date: 2021/1/12 10:42 */ @Configuration @ConfigurationProperties(prefix = "minio") public class MinioConfig { /** * endPoint是一个URL,域名,IPv4或者IPv6地址 */ private String endpoint; /** * 端口 */ private int port; /** * accessKey类似于用户ID,用于唯一标识你的账户 */ private String accessKey; /** * secretKey是你账户的密码 */ private String secretKey; /** * 如果是true,则用的是ip:9000 登录控制台可查看上传的文件 } @Test @Override public void test() { System.out.println("---minio 测试---"); } }

总结

是不是感觉很简单?关注我带你揭秘更多Minio高级用法 源码地址:点此查看源码.

以上就是手把手教你SpringBoot轻松整合Minio的详细内容,更多关于SpringBoot整合Minio的资料请关注易盾网络其它相关文章!

本文共计983个文字,预计阅读时间需要4分钟。

如何轻松整合Minio到SpringBoot项目中?

前言:使用Spring Boot可以非常方便、快速地搭建项目,无需关心框架之间的兼容性、适用版本等问题。我们想使用什么功能,只需添加一个配置即可。以下为本章节正文内容:

前言

使用Spring Boot 可以非常方便、快速搭建项目,使我们不用关心框架之间的兼容性,适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以。

提示:以下是本篇文章正文内容,下面案例可供参考

一、技术介绍

1.Minio是什么?

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

二、使用步骤

1.引入maven库

代码如下(示例):

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.1</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.0.3</version> </dependency> </dependencies>

2.封装Minio

IFile类:

package com.hyh.minio; /** * File接口类 * * @Author: heyuhua * @Date: 2021/1/12 10:33 */ public interface IFile { /** * 上传 * * @param filename 文件名 */ void upload(String filename); /** * 上传 * * @param filename 文件名 * @param object 保存对象文件名称 */ void upload(String filename, String object); }

File接口类:

package com.hyh.minio.service; import com.hyh.minio.IFile; /** * File接口 * * @Author: heyuhua * @Date: 2021/1/12 10:53 */ public interface FileService extends IFile { /** * 上传 * * @param filename 文件名称 * @param object 保存对象文件名称 * @param bucket 存储桶 */ void upload(String filename, String object, String bucket); }

File接口实现类:

如何轻松整合Minio到SpringBoot项目中?

package com.hyh.minio.service.impl; import com.hyh.minio.service.FileService; import com.hyh.utils.common.StringUtils; import io.minio.BucketExistsArgs; import io.minio.MakeBucketArgs; import io.minio.MinioClient; import io.minio.UploadObjectArgs; import io.minio.errors.MinioException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; /** * 文件接口服务实现 * * @Author: heyuhua * @Date: 2021/1/12 10:53 */ @Service public class FileServiceImpl implements FileService { /** * 日志 */ private static final Logger LOG = LoggerFactory.getLogger(FileServiceImpl.class); /** * minio 客户端 */ @Autowired private MinioClient minioClient; /** * 默认存储桶名称 */ @Value("${minio.bucketName:}") private String defaultBucketName; @Override public void upload(String filename) { uploadObject(filename, null, defaultBucketName); } @Override public void upload(String filename, String object) { uploadObject(filename, object, defaultBucketName); } @Override public void upload(String filename, String object, String bucket) { uploadObject(filename, object, bucket); } /** * 上传 * * @param filename * @param object * @param bucket */ private void uploadObject(String filename, String object, String bucket) { if (StringUtils.isAnyBlank(filename, bucket)) return; try { //存储桶构建 bucketBuild(bucket); //保存的文件名称 object = StringUtils.isBlank(object) ? filename.substring(filename.lastIndexOf("/") > 0 ? filename.lastIndexOf("/") : filename.lastIndexOf("\\")) : object; minioClient.uploadObject( UploadObjectArgs.builder() .bucket(bucket) .object(object) .filename(filename) .build()); } catch (MinioException | InvalidKeyException | IOException | NoSuchAlgorithmException exception) { LOG.error("uploadObject error", exception); } } /** * 存储桶构建 * * @param bucketName */ private void bucketBuild(String bucketName) { try { boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); if (!found) { minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); LOG.info("Bucket " + bucketName + " make success."); } else { LOG.info("Bucket " + bucketName + " already exists."); } } catch (MinioException | InvalidKeyException | IOException | NoSuchAlgorithmException exception) { LOG.error("bucketBuild error", exception); } } public String getDefaultBucketName() { return defaultBucketName; } public void setDefaultBucketName(String defaultBucketName) { this.defaultBucketName = defaultBucketName; } }

Minio配置类:

package com.hyh.minio.config; import io.minio.MinioClient; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @Author: heyuhua * @Date: 2021/1/12 10:42 */ @Configuration @ConfigurationProperties(prefix = "minio") public class MinioConfig { /** * endPoint是一个URL,域名,IPv4或者IPv6地址 */ private String endpoint; /** * 端口 */ private int port; /** * accessKey类似于用户ID,用于唯一标识你的账户 */ private String accessKey; /** * secretKey是你账户的密码 */ private String secretKey; /** * 如果是true,则用的是ip:9000 登录控制台可查看上传的文件 } @Test @Override public void test() { System.out.println("---minio 测试---"); } }

总结

是不是感觉很简单?关注我带你揭秘更多Minio高级用法 源码地址:点此查看源码.

以上就是手把手教你SpringBoot轻松整合Minio的详细内容,更多关于SpringBoot整合Minio的资料请关注易盾网络其它相关文章!