苍穹外卖学习-----2024/03/08

1.新增菜品

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


工具类AliOssUtil .java

@Data
@AllArgsConstructor
@Slf4j
public class AliOssUtil {private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;/*** 文件上传** @param bytes* @param objectName* @return*/public String upload(byte[] bytes, String objectName) {// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 创建PutObject请求。ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} catch (ClientException ce) {System.out.println("Caught an ClientException, which means the client encountered "+ "a serious internal problem while trying to communicate with OSS, "+ "such as not being able to access the network.");System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}//文件访问路径规则 https://BucketName.Endpoint/ObjectNameStringBuilder stringBuilder = new StringBuilder("https://");stringBuilder.append(bucketName).append(".").append(endpoint).append("/").append(objectName);log.info("文件上传到:{}", stringBuilder.toString());return stringBuilder.toString();}
}

这段代码定义了一个名为AliOssUtil的Java类,用于实现向阿里云对象存储服务(OSS)上传文件的功能。该类包含以下主要部分:

  1. 类成员变量:定义了与阿里云OSS服务交互所需的一些基本信息,包括endpoint(OSS服务的访问域名),accessKeyId和accessKeySecret(用于身份验证的访问密钥ID和密钥),以及bucketName(存储桶名称,用于存储文件的容器)。
  2. 构造方法:通过@AllArgsConstructor注解,Lombok库自动生成一个包含所有成员变量作为参数的构造方法,用于创建AliOssUtil类的实例并初始化其成员变量。
  3. 日志记录:通过@Slf4j注解,Lombok库为该类自动生成日志记录对象log,便于在类中添加日志输出。
  4. 文件上传方法:upload方法是该类的核心功能,用于将字节数组(byte[] bytes)作为文件内容上传到OSS。该方法接受文件内容的字节数组和目标文件名(objectName)作为参数,并执行以下步骤:

  • 使用成员变量中的认证信息和endpoint创建一个OSS客户端实例。
  • 通过OSS客户端调用putObject方法,将字节流(封装在ByteArrayInputStream中)上传到指定的bucketName和objectName下。
  • 在上传过程中,捕获并处理可能发生的两种异常:OSSException(表示请求已到达OSS但被拒绝)和ClientException(表示客户端在与OSS通信时遇到内部问题)。
  • 最后,无论上传成功与否,都会关闭OSS客户端实例以释放资源。
  • 方法返回上传文件的访问URL,格式为https://BucketName.Endpoint/ObjectName。

5.异常处理:在上传过程中,如果遇到异常情况,代码会捕获异常并打印错误信息,包括错误消息、错误代码、请求ID和主机ID等,有助于开发者诊断和解决问题。

总之,这段代码提供了一个简单的工具类,用于将文件上传到阿里云OSS服务,并返回文件的访问URL。


在这里插入图片描述
这段代码定义了一个名为OssConfiguration的Java配置类,用于Spring框架中。它的主要作用是配置和初始化AliOssUtil这个Bean(即Spring管理的对象),以便在Spring应用程序中自动注入和使用AliOssUtil进行阿里云OSS服务的相关操作。具体来说,该配置类通过以下几个关键点实现了这一功能:

  • @Configuration:这是一个Spring注解,用于标识该类是一个配置类。Spring容器会在启动时扫描所有带有@Configuration注解的类,并根据其中定义的Bean创建和管理这些Bean。
  • @Slf4j:这是Lombok提供的注解,用于自动生成日志记录器(log变量)。在这个配置类中,log被用来记录信息,帮助开发者了解AliOssUtil对象的创建过程。
  • aliOssUtil方法:这个方法使用了两个Spring注解@Bean和@ConditionalOnMissingBean,并定义了如何创建和配置AliOssUtil这个Bean。
  • @Bean:表明该方法返回的对象应该被注册为Spring应用程序上下文中的一个Bean。方法的名称(在这里是aliOssUtil)通常作为Bean的ID。
  • @ConditionalOnMissingBean:这个注解指示Spring容器只有在不存在AliOssUtil类型的Bean时,才执行该方法创建AliOssUtil的Bean。这样可以避免重复创建相同类型的Bean,提高配置的灵活性。
  • 方法参数:aliOssUtil方法接受一个AliOssProperties类型的参数。Spring容器会自动注入这个参数,该参数封装了与阿里云OSS服务交互所需的配置信息,如endpoint、accessKeyId、accessKeySecret和bucketName。
  • 创建AliOssUtil实例:方法内部首先记录日志信息,显示开始创建阿里云对象,并展示相关配置。然后,使用从AliOssProperties对象获取的配置信息来创建AliOssUtil的实例,并返回这个实例。

总结来说,OssConfiguration配置类的作用是在Spring应用程序中自动配置和初始化AliOssUtil这个Bean,使得开发者可以轻松地在其他地方通过依赖注入的方式使用AliOssUtil,进行文件上传等阿里云OSS服务的操作。


出现报错
在这里插入图片描述

解决方法
在这里插入图片描述
上传成功
在这里插入图片描述

import java.io.IOException;
import java.util.UUID;/*** 通用接口*/
@RestController
@RequestMapping("/admin/common")
@Api(tags = "通用接口")
@Slf4j
public class CommonController {@Autowiredprivate AliOssUtil aliOssUtil;/*** 文件上传* @param multipartFile* @return*/@PostMapping("/upload")@ApiOperation("文件上传")public Result<String> upload(@RequestParam("file") MultipartFile multipartFile){log.info("文件上传:{}",multipartFile);try {//获取原石文件名String originalFilename = multipartFile.getOriginalFilename();//截取原始文件名String extension = originalFilename.substring(originalFilename.lastIndexOf("."));//获得新的文件名称String objectName = UUID.randomUUID().toString() + extension;//文件的请求路径String filePath = aliOssUtil.upload(multipartFile.getBytes(), objectName);return Result.success(filePath);} catch (IOException e) {log.error("文件上传失败:{}",e);}return Result.error(MessageConstant.UPLOAD_FAILED);}}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


新增菜品代码

2.菜品的分页查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

准谐振PWM控制器-能够实现多种保护功能FAN6921MRMY 功率因数控制器

高度集成的FAN6921MRMY将功率因数控制器 (PFC) 和准谐振 PWM 控制器相结合。集成提供了成本高效的设计&#xff0c;可减少外部组件数量。对于 PFC&#xff0c;FAN6921MRMY使用控制导通时间技术提供调节的直流输出电压&#xff0c;执行自然的功率因数校正。FAN6921MRMY使用创新的…

微服务超大Excel文件导出方案优化

1、在导出Excel时经常会碰到文件过大&#xff0c;导出特别慢 2、微服务限制了请求超时时间&#xff0c;文件过大情况必然超时 优化思路&#xff1a; 1、文件过大时通过文件拆分、打包压缩zip&#xff0c;然后上传到oss,并设置有效期&#xff08;30天过期&#xff09; 2、把…

基于交叉表生成风控规则(Python)

大家好&#xff0c;我是东哥。 规则是风控策略中最常用的工具之一&#xff0c;生成、筛选、监控、调优&#xff0c;几乎每天都在打交道&#xff0c;本篇来介绍如何基于交叉表来生成风控规则&#xff0c;并且如何基于评估指标进行筛选。 出品人&#xff1a;东哥起飞 专栏&#…

【Spring Boot 源码学习】BootstrapContext的实际使用场景

《Spring Boot 源码学习系列》 BootstrapContext的实际使用场景 一、引言二、往期内容三、主要内容3.1 BootstrapContext3.2 BootstrapRegistry 初始化器实现3.3 BootstrapContext 的实际使用场景3.3.1 早期启动时3.3.2 环境配置准备完成时3.3.3 应用上下文准备完成后关闭 Boot…

Android增量报告生成新方案

在开发精准测试覆盖率相关的功能时候&#xff0c;对于Android的增量报告&#xff0c;由于担心修改jacoco插件会影响App的打包&#xff0c;所以一直没有修改。在网上查了一下&#xff0c;没有找到合适的方案。只有一个diff-cover开源项目&#xff1a;https://github.com/abmaonl…

Yolov8-pose关键点检测:SPPF创新涨点篇 | SPPELAN:SPP创新结合ELAN ,效果优于SPP、SPPF| YOLOv9

💡💡💡本文独家改进:新颖SPPF创新涨点改进,SPP创新结合ELAN,来自于YOLOv9,助力YOLOv8-pose,将SPPELAN代替原始的SPPF SPPELAN结构图如下: Yolov8-Pose关键点检测专栏介绍:https://blog.csdn.net/m0_63774211/category_12398833.html ✨✨✨手把手教你从数据标…

计算机网络——23网络层导论

网络层导论 网络层服务 在发送主机和接收主机对之间传送段&#xff08;segment&#xff09;在发送端将段封装到数据报中在接收端&#xff0c;将段上交给传输层实体网络层协议存在于每一个主机和路由器路由器检查每一个经过它的IP数据报的头部 网络层的关键功能 网络层功能 …

C#,老鼠迷宫问题的回溯法求解(Rat in a Maze)算法与源代码

1 老鼠迷宫问题 迷宫中的老鼠&#xff0c;作为另一个可以使用回溯解决的示例问题。 迷宫以块的NN二进制矩阵给出&#xff0c;其中源块是最左上方的块&#xff0c;即迷宫[0][0]&#xff0c;目标块是最右下方的块&#xff0c;即迷宫[N-1][N-1]。老鼠从源头开始&#xff0c;必须…

MySQL 篇-快速了解事务、索引

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 事务概述 1.1 事务四大特性(ACID) 2.0 索引概述 2.1 关于 “索引一定要创建在主键上&#xff1f;” 的问题 2.2 索引操作语法 2.3 索引结构 1.0 事务概述 事务是…

JavaWeb实验 JSP内置对象

实验目的 掌握JSP内置对象的使用&#xff1b;内置对象包括out\request\response\cookie等。 实验内容 【1】创建一个JSP网页&#xff0c;文件名为index.jsp&#xff0c;利用request内置对象获取客户端访问ip的功能&#xff0c;屏蔽用户利用局域网实际ip访问Web&#xff0c;但…

技术选型思考:分库分表和分布式DB(TiDB/OceanBase) 的权衡与抉择

在当今数据爆炸的时代&#xff0c;数据库作为存储和管理数据的核心组件&#xff0c;其性能和扩展性成为了企业关注的重点。随着业务的发展和数据量的不断增长&#xff0c;传统的单库单表架构逐渐暴露出性能瓶颈和扩展性限制。为了应对这些挑战&#xff0c;企业常常需要在分库分…

15. C++泛型与符号重载

【泛型编程】 若多组类型不同的数据需要使用相同的代码处理&#xff0c;在C语言中需要编写多组代码分别处理&#xff0c;这样做显然太过繁琐&#xff0c;C增加了虚拟类型&#xff0c;使用虚拟类型可以实现一组代码处理多种类型的数据。 虚拟类型是暂时不确定的数据类型&#…

数据中台:数字中国战略关键技术设施

文章目录 每日一句正能量前言为何要建设数据中台数据中台建设痛点数据中台学习资料聚焦前沿&#xff0c;方法论体系更新与时俱进&#xff0c;紧跟时代热点深入6大行业&#xff0c;提炼实践精华大咖推荐&#xff0c;数字化转型必备案头书购买链接赠书活动 每日一句正能量 人生之…

找不到本地组策略编辑器解决办法

创建记事本写入以下命令 echo offpushd "%~dp0"dir /b %systemroot%\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >gp.txtdir /b %systemroot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-…

Django会话

一、Cookie介绍 1.1、背景介绍 HTTP协议有一个特性就是无状态的,是指协议对于交互性场景没有记忆能力 随着动态交互的web应用的出现,HTTP的无状态特性严重阻碍了动态交互应用程序的发展,例如一些购物网站在进行购物时候都会进行了页面跳转/刷新,按照HTTP的无状态协议岂不…

Compose UI 之 MediumLarge TopAppBar

Medium&Large TopAppBar 前面文章介绍了 Small 类型的 TopAppBar&#xff1a;TopAppBar CenterAlignedTopAppBar 。下来介绍 Medium 和 Large 类型的 TopAppBar&#xff1a;MediumTopAppBar LargeTopAppBar 。 MediumTopAppBar 上面介绍了Small 类型的 TopAppBar (TopAp…

实战|环信 Vue2 uniapp Demo重构焕新!经典再升级!

项目背景 当前环信 uni-app vue2 Demo 地址升级版本 Github 地址&#xff08;临时&#xff09; 原版本功能实现方式较混乱&#xff0c;代码逻辑晦涩难懂&#xff0c;不利于开发者参考或复用。此实战项目在确保原项目功能保留的情况下进行完全重写并新增大量功能&#xff0c;以…

【C语言】指针相关知识点

什么是指针&#xff1f; 指针&#xff08;Pointer&#xff09;是编程语言中的一个对象&#xff0c;利用地址&#xff0c;它的值直接指向&#xff08;points to&#xff09;存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元&#xff0c;可以说&#xff0c;地…

Golang搭建grpc环境

简介 OS : Windows 11 Golang 版本: go1.22.0 grpc : 1.2 protobuffer: 1.28代理 没有代理国内环境下载不了库七牛CDN &#xff08;试过可用&#xff09; go env -w GOPROXYhttps://goproxy.cn,direct阿里云代理(运行grpc时下载包出现报错 ): go env -w GOPROXYhttps://mirr…

黑马点评-异步秒杀实现

异步秒杀思路 我们来回顾一下下单流程 当用户发起请求&#xff0c;此时会请求nginx&#xff0c;nginx会访问到tomcat&#xff0c;而tomcat中的程序&#xff0c;会进行串行操作&#xff0c;分成如下几个步骤 1、查询优惠卷 2、判断秒杀库存是否足够 3、查询订单 4、校验是…