当前位置: 首页 > news >正文

SpringBoot整合对象存储Minio

JDK版本-17

1、引入依赖

<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.6.0</version> </dependency>

2、由于Minio没有starter,需要手动创建Bean对象放入Spring的IOC容器进行管理

为了方便管理我在yaml中配置了Minio的相关配置,endpoint、accessKey、secretKey

minio: endpoint: 服务端地址 accessKey: 账号 secretKey: 密码
@ConfigurationProperties(prefix = "minio") @Component @Data public class MinioInfo { private String endpoint; private String accessKey; private String secretKey; }
/** * Minion的配置类 */ @Configuration public class MinIoConfig { @Autowired private MinioInfo minioInfo; //单例,没有线程安全问题 @Bean public MinioClient minioClient() { return MinioClient.builder() .endpoint(minioInfo.getEndpoint()) .credentials(minioInfo.getAccessKey(), minioInfo.getSecretKey()) .build(); } }

3、使用

使用的时候注入MinioClient即可,内置了多种方法,只进行了几个简单测试

@SpringBootTest @Slf4j public class DemoController { //我们在使用的时候直接注入MinioClient即可 @Autowired private MinioClient minioClient; /** * 测试篮子是否存在 */ @Test @SneakyThrows void testBucketExists() { boolean demo = minioClient.bucketExists(BucketExistsArgs.builder().bucket("test").build()); System.out.println("demo = " + demo); } /** * 创建存储桶并设置公开访问策略 */ @Test @SneakyThrows void testMakeBucket() { String policy="{\n" + " \"Version\": \"2012-10-17\",\n" + " \"Statement\": [\n" + " {\n" + " \"Effect\": \"Allow\",\n" + " \"Principal\": \"*\",\n" + " \"Action\": [\n" + " \"s3:GetObject\"\n" + " ],\n" + " \"Resource\": [\n" + " \"arn:aws:s3:::*/*\"\n" + " ]\n" + " }\n" + " ]\n" + "}"; minioClient.makeBucket(MakeBucketArgs.builder().bucket("test").build()); minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket("test").config(policy).build()); } /** * 获取所有的存储桶 */ @Test @SneakyThrows void testListBuckets() { List<Bucket> buckets = minioClient.listBuckets(); for (Bucket bucket : buckets) { System.out.println("bucket = " + bucket.name()); } } //上传文件,并给文件指定名称 @Test @SneakyThrows void testPutObject() { //将指定文件上传至Minion服务器上,并指定文件名 // File file = new File("D:\\images\\OIP-C.jpg"); // minioClient.putObject(PutObjectArgs.builder() // .bucket("test") // .object("one.jpg") // .stream(new FileInputStream(file),file.length(), -1) // .build()); minioClient.uploadObject(UploadObjectArgs.builder() .bucket("test") .object("test.jpg") .filename("D:\\images\\OIP-C.jpg") .build()); } /** * 获取可访问的文件url */ @Test @SneakyThrows void testUrl() { String url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder() .bucket("test") .object("test.jpg") .method(Method.GET) .build() ); System.out.println( url); } }
http://www.jsqmd.com/news/432531/

相关文章:

  • SEMI-S2认证的超薄晶圆Aligner有适配翘曲晶圆的型号吗?
  • 活动证书怎么生成?3种证书制作方法详解 - Echo8
  • 白盒测试/接口测试/自动化测试
  • PEEK注塑与精密模具:PEEK衬套赋能机器人关节轻量化与降本制造
  • 很好用的gRPC和WebSocket调试工具Apipost!强烈推荐
  • 2026年 佐敦油漆厂家推荐排行榜:佐敦底漆/环氧云铁中间漆/氟碳漆/环氧富锌底漆/核级环氧涂料,专业品质与创新技术深度解析 - 品牌企业推荐师(官方)
  • GEO服务商技术代际跃迁:2026年AI认知战争的主导权争夺
  • 过来人劝大家:想转行网络安全都清醒一点!不然。
  • 数据防泄密软件有哪些?2026精选3款经典的数据防泄密软件,你中意那个
  • 为何越来越多的程序员纷纷转行网络安全?_软件工程师有必要转安全岗位吗
  • UNIGROUP紫光微 TPG65R125MH DFN8x8 场效应管(MOSFET)
  • 收藏!春节被问工资?大厂抢人大模型岗位,小白也能入局躺赢
  • 阿里、华为都选择的PostgreSQL数据库,到底比MySQL强在哪里?
  • Postman的几种请求方式
  • 轻舟分公司协作平台:统一管理、高效协作
  • PICO解决手势重影渲染问题
  • 2026年 海虹涂料厂家推荐排行榜:环氧沥青漆/聚氨酯面漆/氟碳漆/工业漆/可控核聚变涂层,专业实力与创新技术深度解析 - 品牌企业推荐师(官方)
  • 如何用postman进行web端自动化测试?
  • 当自主智能体“失控”:深度解析《Agents of Chaos》揭示的涌现性风险
  • CELLWISE CW2015CHBD TDFN8 电池管理
  • 记忆工程详解(THS)
  • Selenium工具使用Python实现下拉框定位操作
  • AVAGO安华高 HCNR200-000E DIP-8 晶体管输出光耦
  • PANASONIC松下 AXT640124 SMD 板对板与背板连接器
  • vmware 安装ubuntu 的网络配置注意事项
  • 小白程序员必看:收藏这份AI大模型Agent平台指南,轻松入门下一个风口!
  • HCTL华灿天禄 HC-PHB-2*4A P2mm 线对板针座
  • AI自动化运维开发快速入门
  • 2026年普通程序员转型大模型应用开发保姆级教程——从入门到精通,这一篇就够了!
  • 2026实验室设备采购指南:高低温一体机、分子蒸馏与磁力搅拌反应釜实力厂家深度测评 - 深度智识库