前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Springboot3 + Minio + 腾讯混元助手 做一个网盘(一)

Springboot3 + Minio + 腾讯混元助手 做一个网盘(一)

原创
作者头像
花花Binki
修改2023-09-22 20:33:27
5420
修改2023-09-22 20:33:27
举报
文章被收录于专栏:岚的工作随笔岚的工作随笔

准备

  • Spring Boot 3.2.0 (SNAPSHOT)
  • JDK 21
  • Minio RELEASE.2023-09-07

补充知识

介绍一下minio
介绍一下minio
核心概念:

Bucket:这部分助手的回答还是上图这个,所以我自己来回答一下

Bucket 英文直译就是桶,就开发角度来说,一个用户有多个桶,每个桶存放不同类型的数据。这就像你的c盘放系统,D盘放学习资料,E盘放开发工程一样。当然也可以都放一个盘。

一. 初始化

从0开始搭建环境,AIGC辅助生产。

1.1 Spring boot初始化

在写文章的此刻,JDK 21还不可选,所以选20之后手动改

基础选项
基础选项

Spring Web为了直接测试。

Devtools为了热重启

下载完zip包,更改pom文件

代码语言:html
复制
	<properties>
		<java.version>21</java.version>
	</properties>

1.2 Minio初始化

使用时国内网站有bug,手动更改URL标签后缀。比如kubernetes -> docker 也可以使用原站

选择你习惯的版本,我选的docker的方式。

官方这里其实少了一步骤,run之前应该先在docker desktop拉取一下。

windows 终端 服务端 启动指令
代码语言:shell
复制
podman run -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001"

客户端/连接端

非必须

代码语言:shell
复制
podman run --name my-mc --hostname my-mc -it --entrypoint /bin/bash --rm minio/mc

WSL窗口 基本属性

代码语言:shell
复制
[root@my-mc /]# mc alias set myminio/ https://my-minio-service MY-USER MY-PASSWORD
[root@my-mc /]# mc ls myminio/mybucket

官方提供的Minio SDK

代码语言:html
复制
    <dependency>
        <groupId>io.minio</groupId>
        <artifactId>minio</artifactId>
        <version>8.4.3</version>
    </dependency>

非官方的statr(列举一个)

代码语言:html
复制
    <dependency>
      <groupId>com.jvm123</groupId>
      <artifactId>minio-spring-boot-starter</artifactId>
      <version>1.2.1</version>
    </dependency>

启动一下康康

日志

代码语言:shell
复制
2023-09-21 21:33:03 Status:         1 Online, 0 Offline. 
2023-09-21 21:33:03 S3-API: http://172.17.0.2:9000  http://127.0.0.1:9000 
2023-09-21 21:33:03 Console: http://172.17.0.2:9090 http://127.0.0.1:9090

web管理后台

Minio 后台
Minio 后台

密码没有手动设置、或者忘了的话,看这里

账号密码
账号密码

输入正确之后,来到真的管理控制台,整体像腾讯云COS。

Minio Console
Minio Console

关于控制台更多详细请看:Minio console

1.3 助手指导

非docker交给腾讯混元助手

windows 创建并启动 Minio
windows 创建并启动 Minio

答案很标准,md的格式也显示的没有错误。就是现在没有网页端只能截图有点遗憾。

二. 编写工具类

因为上边出色的表现,现在完全引导他来编写

点击下方的更多灵感,切换成代码生成器

代码生成器
代码生成器

这些灵感就是预设一些额外的提示,使得回答模型更精确专业一些。

接下来,我的问题是:在spring boot环境写一个minio的增删改查的工具。

工具类
工具类

可以看到,不仅有了代码,还补充了一些基础信息(没有看到),最后还有配置文件。

代码语言:java
复制
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;

@Component
public class MinioUtil {

    private final MinioClient minioClient;

    public MinioUtil(@Value("${minio.endpoint}") String endpoint,
                      @Value("${minio.accessKey}") String accessKey,
                      @Value("${minio.secretKey}") String secretKey) {
        this.minioClient = MinioClient.builder()
                .endpoint(endpoint)
                .credentials(accessKey, secretKey)
                .build();
    }

    public boolean createBucket(String bucketName) {
        try {
            minioClient.makeBucket(bucketName);
            return true;
        } catch (MinioException | IOException | NoSuchAlgorithmException e) {
            e.printStackTrace();
            return false;
        }
    }

    public boolean deleteBucket(String bucketName) {
        try {
            minioClient.removeBucket(bucketName);
            return true;
        } catch (MinioException | IOException | NoSuchAlgorithmException e) {
            e.printStackTrace();
            return false;
        }
    }

    public boolean putObject(String bucketName, String objectName, byte[] content) {
        try {
            minioClient.putObject(bucketName, objectName, content, "application/octet-stream");
            return true;
        } catch (MinioException | IOException | NoSuchAlgorithmException | InvalidKeyException e) {
            e.printStackTrace();
            return false;
        }
    }

    public byte[] getObject(String bucketName, String objectName) {
        try {
            return minioClient.getObject(bucketName, objectName);
        } catch (MinioException | IOException | NoSuchAlgorithmException | InvalidKeyException e) {
            e.printStackTrace();
            return null;
        }
    }

    public boolean deleteObject(String bucketName, String objectName) {
        try {
            minioClient.removeObject(bucketName, objectName);
            return true;
        } catch (MinioException | IOException | NoSuchAlgorithmException e) {
            e.printStackTrace();
            return false;
        }
    }
}

整体过关,就是少了注释。

三. 小结

项目到这里算是一个demo,目前还没前端调用,不过简单功能实现了。

满分10分,助手打8分吧。有些词理解的还不是很准确,但各种领域应用还是展示的很到位的。


我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
  • 补充知识
  • 一. 初始化
    • 1.1 Spring boot初始化
      • 1.2 Minio初始化
        • 1.3 助手指导
        • 二. 编写工具类
        • 三. 小结
        相关产品与服务
        腾讯混元大模型
        腾讯混元大模型(Tencent Hunyuan)是由腾讯研发的大语言模型,具备强大的中文创作能力,复杂语境下的逻辑推理能力,以及可靠的任务执行能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档