小白勇闯开发之瑞吉外卖(4)

今天学习的部分是day04的文件上传下载和新增菜品,每次视频没看多少,百度要打开一堆窗口,有太多的基础知识感觉没有掌握清楚。行动是打败焦虑的方法,只要行动起来我就一定会有收获!

2024.2.28开学啦,要进入冲刺阶段了!!重新更新一下文章因为整个04做完了

目录

1.配置文件中的值注入到java类中

<1>.变量上标明@Value("${yml中的名称}"),前提是,属性值写在application.yml中

<2>.@ConfigurationProperties(prefix=" "),单独使用,不用配合@Value。

<3>.@PropertySource :加载指定的配置文件,通常配合@Value注解使用。

2.MultipartFile

3.UUID

4.substring()

5.区分传统风格请求和REST风格请求

5.1拓展 @RequestBody、@PathVariable、@RequestParam三个注解用法与区别

6.Java中File常见的方法

7.response.setContentType的固定相应格式(常见)

8.Springe事务之@Transactional注解

9.page中的records参数

10.BeanUtils.copyProperties的用法

10.1 拓展:深拷贝和浅拷贝

1.配置文件中的值注入到java类中
<1>.变量上标明@Value("${yml中的名称}"),前提是,属性值写在application.yml中

例如,我在yml文件中配置了一个文件默认的保存地址,是自定义的,现在想注入到java类中

 @Value("${reggie.path}")
    private String bathPath;
<2>.@ConfigurationProperties(prefix=" "),单独使用,不用配合@Value。

告诉SpringBoot,本类中所有属性和配置文件中相关的配置进行绑定。例如prefixe="person",将person类中的所有属性值与yml中的属性匹配

<3>.@PropertySource :加载指定的配置文件,通常配合@Value注解使用。

ex:@PropertySource(value = "classpath:person.yml")

2.MultipartFile

MultipartFile是SpringMVC提供简化上传操作的工具类。

这篇文章中介绍了比较齐的MultipartFile提供的方法,留下当作备忘录。

特别注意!!!在方法中传入MultipartFile时参数名不能随便写,要先去看一下前端当中name的值是多少

ex:以下是前端页面截图,可以看到name的值为“file",所以在方法中传入参数时也要传入的是file

public R<String> upload(MultipartFile file)
3.UUID

UUID是可以在多个计算机系统之间唯一标识信息的通用标识符。由于UUID是唯一的,系统可以轻松地使用它们来跟踪和管理这些对象,避免出现冲突和重复。

4.substring()

截取部分字符串,截取后的数据类型依旧为字符串,在项目中新学到,如果想倒着截取,例如”abc.jpg",只想截取".jpg",代码如下:

name.substring(name.lastIndexOf("."));
5.区分传统风格请求和REST风格请求

传统风格:传统的 url 是通过参数来说明 crud 的类型

REST风格:url参数中不会出现crud 的类型,如delete,update,findAll等

5.1拓展 @RequestBody、@PathVariable、@RequestParam三个注解用法与区别

<1>.@RequestParam

当url地址上是“参数名称=参数值”时,要用@RequestParam,如果是多个参数用&分隔

  • 如果页面传入的参数(请求链接上)和类中接收参数一致,不管是一个参数还是多个参数,@RequestParam注解可以省略
  • 如果页面传入的参数(请求链接上)和类中接收参数不一致,@RequestParam注解不可以省略,且需要使用注解value属性写上页面传入的参数名

<2>.@PathVariable

用于接收路径参数,使用{参数名称}描述路径参数,这个注解可以实现url请求参数中的占位符{}到目标方法中参数的映射。

http://localhost:8080/dish/1552978624443916290
  • 如果页面传入的参数(请求链接上)和类中接收参数一致,value属性可以不写,但是@PathVariable注解不可省略,否则会导致报错

  • 如果页面传入的参数(请求链接上)和类中接收参数不一致,需要使用注解value属性写上页面传入的参数名。
  • @GetMapping("/{id}/{name}")
        public R<DishDto> getById(@PathVariable Long id,@PathVariable("name") String username)

<3>.@RequestBody

 用于接收json数据

还有很多注意事项,参考的这篇总结的非常好

@RequestBody、@PathVariable、@RequestParam三个注解用法与区别_@requestbody可以省略吗-CSDN博客

6.Java中File常见的方法

可参考  https://www.cnblogs.com/2027472755-even/p/13614543.html

File:既可以作为文件,也可以作为目录

7.response.setContentType的固定相应格式(常见)
response.setContentType("image/jpeg");   //图片
response.setContentType("audio/mp3");    //音频
response.setContentType("application/pdf");  //pdf
response.setContentType("text/html; charset=utf-8");   //html
response.setContentType("text/plain; charset=utf-8");  //文本
8.Springe事务之@Transactional注解

按我自己的理解来说,当一个操作涉及到多个相互有关联的表的时候,为了保持事务一致性,一般在访问数据库的service方法上加@Transactional注解。目的是保证同成功,同失败。

注意,加入事务后,一定要在项目的application上添加@EnableTransactionalManagement注解,才能让spring读取到事务。

9.page中的records参数

records参数值的是当前的页面信息,其实也就是当前获得的pageinfo的信息,是list集合的形式。

10.BeanUtils.copyProperties的用法

BeanUtils.copyProperties(原对象,待复制的对象);    顺序一定不能错

10.1 拓展:深拷贝和浅拷贝

在运用到BeanUtils.copyProperties()时一般是浅拷贝,就是把原对象中的值复制到待复制对象

深拷贝:深拷贝会创建一个完全独立的新对象,递归地复制所有的子对象,确保完全独立性;一般对象包含可变对象,如对象为可变对象(如列表、字典等)时。深拷贝后的两个对象是完全独立的两个对象!

浅拷贝:只复制最外层对象,内部的嵌套对象仍然是原始对象和复制对象共享的。一般当对象只包含简单的数据类型(如整数、字符串等)时。复制对象中的列表仍然引用原始对象的列表,因此修改一个列表将同时影响两个对象。

  • 34
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值