Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能

news2025/1/14 18:12:51

Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能

基于SpringBoot3+Vue3前后端分离的Java快速开发框架

项目简介:基于 JDK 17、Spring Boot 3、Spring Security 6、JWT、Redis、Mybatis-Plus、Knife4j等构建后端,基于Vue 3、Element-Plus 、TypeScript等构建前端的分离单体权限管理系统。

项目地址:

后端:

gitee: https://gitee.com/harry-tech/harry.git

gitcode: https://gitcode.com/harry-tech/harry.git

前端:

gitee: https://gitee.com/harry-tech/harry-vue.git

gitcode: https://gitcode.com/harry-tech/harry-vue.git

觉着有帮助,给个Star再走呗 ~~~~

公众号搜“Harry技术”,关注我,带你看不一样的人间烟火!

image-20250110235139741

端口修改

之前后端服务的启动端口设置为9000,而现在将其修改为9999。为什么会做出这样的修改呢?这主要是由于在进行minio整合工作的时候,发现后端原本使用的9000端口与minio存储服务的端口产生了冲突。在这种情况下,为了确保整个项目的顺利运行(也方便大家在整合minio做出不必要的麻烦),经过权衡,只能做出调整,让出原本使用的端口,将后端服务的启动端口修改为9999

  • 后端修改
server:
  port: 9999
  • 前端修改

image-20250110232547591

注意:最近总是有小伙伴在运行项目的时候报错,首先,确保本地安装了redis、mysql等,其次查看一下前端.env.development文件中 Mock 服务是否为false状态,当设置为false时,才会去加载后台接口。

# 是否启用 Mock 服务
VITE_MOCK_DEV_SERVER = false

添加存储(minio、aliyun oss)

image-20250110233524780

有关minio的安装,这里就不过多说了,可以参考《Windows下Minio的安装以及基本使用》、《Spring Boot 3 整合 minio 实现文件存储》这两篇文章带你入门。

minio依赖

  <minio.version>8.5.10</minio.version>

	<!-- MinIO 对象存储 -->
    <dependency>
        <groupId>io.minio</groupId>
        <artifactId>minio</artifactId>
        <version>${minio.version}</version>
    </dependency>

阿里云OSS依赖

<aliyun.oss.version>3.17.4</aliyun.oss.version>

 <dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>${aliyun.oss.version}</version>
 </dependency>

在项目启动前,先选择你需要的存储服务器,比如你想使用minio作为存储,那么你在yml文件中进行相关的配置,将type设置为minio

# 文件存储配置
oss:
  # OSS 类型 (目前支持aliyun、minio)
  type: minio
  # MinIO 对象存储服务
  minio:
    # 服务Endpoint
    endpoint: http://localhost:9090
    # 访问凭据
    access-key: eFbF9rSBtgfqiLGDcPDo
    # 凭据密钥
    secret-key: Sfgc06T1S6zhzVTzCwIFhr6KUs7zqCwOwFkHHez4
    # 存储桶名称
    bucket-name: harry
    # (可选)自定义域名,如果配置了域名,生成的文件URL是域名格式,未配置则URL则是IP格式
    custom-domain:
  # 阿里云OSS对象存储服务
  aliyun:
    # 服务Endpoint
    endpoint: oss-cn-beijing.aliyuncs.com
    # 访问凭据
    access-key-id: XXX
    # 凭据密钥
    access-key-secret: XXX
    # 存储桶名称
    bucket-name: honghh

短信sms(aliyun、模拟)

这次更新里,我们接入了阿里云的短信服务。比如你在个人中心换个手机号,就得先拿到一个短信验证码。但在咱们本地测试的时候,老发真实短信也太费钱了。所以啊,我特意加了个模拟发送短信的功能,这样在后台就能直接打印出验证码来,你只需要输入这个验证码就能完成验证了。那么,我们应该如何开启模拟功能呢?很简单,只需要将sms.aliyun.enable设置为false就可以了。

sms:
  aliyun:
    enable: false  #如果enable为false时 则不发送短信
    accessKeyId: XXX
    accessKeySecret: XXX
    regionId: cn-shanghai
    signName: Harry技术
    templateCodes:
      # 注册(预留)
      register: SMS_xxx
      # 登录(预留)
      login: SMS_xxx
      # 修改密码
      changePassword: SMS_xxx
@Slf4j
@Component
@ConditionalOnProperty(value = "sms.aliyun.enable", havingValue = "false")
public class FakeSmsStrategy implements SmsStrategy {
    @Override
    public SendSmsResponse send(SmsParam smsParam) {
        log.info("FakeSmsStrategy smsParam:{}", JSONUtil.toJsonStr(smsParam));
        String str = "{\"bizId\":\"111111111\",\"code\":\"OK\",\"message\":\"并未真实发送\",\"requestId\":\"111111111\"}";
        return BeanUtil.copyProperties(JSONUtil.parseObj(str), SendSmsResponse.class);
    }
}

邮件发送

这次更新里,我们还引入了邮件发送,如果你没有基础,你可以去学习这篇文章进行入门《使用Java实现邮件发送功能,邮件发送API JavaMail》,配置也是很简单的。

引入依赖

        <!--   邮件发送     -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

功能实现

/**
 * @author harry
 * @公众号 Harry技术
 */
public interface MailService {
    /**
     * 发送简单文本邮件
     *
     * @param to      收件人地址
     * @param subject 邮件主题
     * @param text    邮件内容
     */
    void sendMail(String to, String subject, String text) ;

    /**
     * 发送带附件的邮件
     *
     * @param to      收件人地址
     * @param subject 邮件主题
     * @param text    邮件内容
     * @param filePath 附件路径
     */
    void sendMailWithAttachment(String to, String subject, String text, String filePath);

完善个人中心

个人中心

修改文件内容

image-20250110231702161

总结

本次更新主要包含以下内容:

  1. 端口修改:为避免与Minio存储服务冲突,后端启动端口从9000改为9999。
  2. 添加存储支持:集成Minio和阿里云OSS对象存储服务,详细配置请参考相关文档。
  3. 短信服务:接入阿里云短信服务,并增加模拟发送功能,方便本地测试。
  4. 邮件发送:引入邮件发送功能,支持简单文本邮件和带附件邮件。
  5. 完善个人中心:优化个人中心页面,提升用户体验。

注意事项:

  • 确保本地安装Redis、MySQL等。
  • 检查前端.env.development文件中Mock服务是否设置为false,以加载后台接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2276591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习中的卷积和反卷积(三)——卷积和反卷积的计算

1 Stride和Padding的介绍 计算卷积和反卷积绕不开stride和padding的讨论。卷积和反卷积里都有stride和padding参数&#xff0c;但是同一个参数在卷积和反卷积里的作用不一样&#xff0c;非常容易使人困惑&#xff0c;本文试图理清他们的关系&#xff0c;并用实际数值例子演示计…

网页美观进阶:每一种渐变的实现方式

CSS 渐变效果详解&#xff1a;每一种渐变的实现方式 在现代网页设计中&#xff0c;CSS 渐变效果为我们提供了一种丰富的视觉表现手段&#xff0c;可以使简单的背景或元素具有动态和立体感。渐变从单一颜色转变为另一种颜色&#xff0c;为网站增添了活力与美感。在这篇博文中&a…

Mac MySQL 8.0.30的安装(保姆级教程)

目录预览&#xff1a; 一、下载及安装1.下载2.安装 二、环境变量配置1.编辑文件2.添加配置3.配置生效4.版本查看 三、启动1.MySQL服务的启停和状态的查看2.启动mysql2.1 查看服务状态2.2 Mysql关掉重启2.2.1 查看进程2.2.2 杀死进程2.2.3 验证进程是否成功杀死2.2.4 重新启动My…

Linux服务器网络丢包场景及解决办法

一、Linux网络丢包概述 在数字化浪潮席卷的当下&#xff0c;网络已然成为我们生活、工作与娱乐不可或缺的基础设施&#xff0c;如同空气般&#xff0c;无孔不入地渗透到各个角落。对于 Linux 系统的用户而言&#xff0c;网络丢包问题却宛如挥之不去的 “噩梦”&#xff0c;频繁…

浅谈云计算09 | 服务器虚拟化

服务器虚拟化基础 一、虚拟化的定义二、系统虚拟化三、服务器虚拟化的核心要义四、典型实现&#xff1a;探索不同路径五、全虚拟化与半虚拟化六、主流服务器虚拟化技术 一、虚拟化的定义 虚拟化是一种将物理资源抽象为逻辑资源的技术&#xff0c;通过在物理硬件与操作系统、应…

traceroute原理探究

文章中有截图&#xff0c;看不清的话&#xff0c;可以把浏览器显示比例放大到200%后观看。 linux下traceroute的原理 本文通过抓包观察一下linux下traceroute的原理 环境&#xff1a;一台嵌入式linux设备&#xff0c;内网ip是192.168.186.195&#xff0c;其上有192.168.202.…

uni-app无限级树形组件简单实现

因为项目一些数据需要树形展示&#xff0c;但是官网组件没有。现在简单封装一个组件在app中使用&#xff0c;可以无线嵌套&#xff0c;展开&#xff0c;收缩&#xff0c;获取子节点数据等。 简单效果 组件TreeData <template><view class"tree"><te…

4种革新性AI Agent工作流设计模式全解析

文章目录 导读&#xff1a;AI Agent的四种关键设计模式如下&#xff1a;1. 反思2. 工具使用3. 规划4. 多Agent协作 总结内容简介&#xff1a; 导读&#xff1a; AI Agent是指能够在特定环境中自主执行任务的人工智能系统&#xff0c;不仅接收任务&#xff0c;还自主制定和执行…

GO语言实现KMP算法

前言 本文结合朱战立教授编著的《数据结构—使用c语言&#xff08;第五版&#xff09;》&#xff08;以下简称为《数据结构&#xff08;第五版&#xff09;朱站立》&#xff09;中4.4.2章节内容编写&#xff0c;KMP的相关概念可参考此书4.4.2章节内容。原文中代码是C语言&…

Trimble自动化激光监测支持历史遗产实现可持续发展【沪敖3D】

故事桥&#xff08;Story Bridge&#xff09;位于澳大利亚布里斯班&#xff0c;建造于1940年&#xff0c;全长777米&#xff0c;横跨布里斯班河&#xff0c;可载汽车、自行车和行人往返于布里斯班的北部和南部郊区。故事桥是澳大利亚最长的悬臂桥&#xff0c;是全世界两座手工建…

深度学习笔记11-优化器对比实验(Tensorflow)

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 一、导入数据并检查 二、配置数据集 三、数据可视化 四、构建模型 五、训练模型 六、模型对比评估 七、总结 一、导入数据并检查 import pathlib,…

MySQL 16 章——变量、流程控制和游标

一、变量 在MySQL数据库的存储过程和存储函数中&#xff0c;可以使用变量来存储查询或计算的中间结果数据&#xff0c;或者输出最终的结果数据 在MySQL数据库中&#xff0c;变量分为系统变量和用户自定义变量 &#xff08;1&#xff09;系统变量 1.1.1系统变量分类 变量由…

【HTML+CSS+JS+VUE】web前端教程-13-Form表单

表单在web网页中用来给用户填写信息,从而能采用户信息,使网页具有交互的功能, 所有的用户输入内容的地方都用表单来写,如登录注册、搜索框。 表单是由容器和控件组成的,一个表单一般应该包含用户填写信息的输入框,提交按钮等,这些输入框,按钮叫做控件,表单就是容器,他…

LabVIEW滤波器功能

程序通过LabVIEW生成一个带噪声的正弦波信号&#xff0c;并利用滤波器对其进行信号提取。具体来说&#xff0c;它生成一个正弦波信号&#xff0c;叠加高频噪声后形成带噪信号&#xff0c;再通过低通滤波器滤除噪声&#xff0c;提取原始正弦波信号。整个过程展示了信号生成、噪声…

linux: 文本编辑器vim

文本编辑器 vi的工作模式 (vim和vi一致) 进入vim的方法 方法一:输入 vim 文件名 此时左下角有 "文件名" 文件行数,字符数量 方法一: 输入 vim 新文件名 此时新建了一个文件并进入vim,左下角有 "文件名"[New File] 灰色的长方形就是光标,输入文字,左下…

Java Web开发进阶——错误处理与日志管理

错误处理和日志管理是任何生产环境中不可或缺的一部分。在 Spring Boot 中&#xff0c;合理的错误处理机制不仅能够提升用户体验&#xff0c;还能帮助开发者快速定位问题&#xff1b;而有效的日志管理能够帮助团队监控应用运行状态&#xff0c;及时发现和解决问题。 1. 常见错误…

《零基础Go语言算法实战》【题目 2-25】goroutine 的执行权问题

《零基础Go语言算法实战》 【题目 2-25】goroutine 的执行权问题 请说明以下这段代码为什么会卡死。 package main import ( "fmt" "runtime" ) func main() { var i byte go func() { for i 0; i < 255; i { } }() fmt.Println("start&quo…

Ubuntu系统Qt的下载、安装及入门使用,图文详细,内容全面

文章目录 说明1 在线安装2 离线安装3 使用Qt Creator创建Qt应用程序并构建运行补充补充一&#xff1a;注册Qt账号 说明 本文讲解Ubuntu系统下安装Qt&#xff0c;包括在线安装和离线安装两种方式&#xff0c;内容充实细致&#xff0c;话多但是没有多余&#xff08;不要嫌我啰嗦…

线形回归与小批量梯度下降实例

1、准备数据集 import numpy as np import matplotlib.pyplot as pltfrom torch.utils.data import DataLoader from torch.utils.data import TensorDataset######################################################################### #################准备若干个随机的x和…

P3884 [JLOI2009] 二叉树问题

题目描述&#xff1a; 如下图所示的一棵二叉树的深度、宽度及结点间距离分别为&#xff1a; - 深度&#xff1a;4 - 宽度&#xff1a;4 - 结点 8 和 6 之间的距离&#xff1a;8 - 结点 7 和 6 之间的距离&#xff1a;3 其中宽度表示二叉树上同一层最多的结点个数&#xff0c;节…