今天学习的部分是day04的文件上传下载和新增菜品,每次视频没看多少,百度要打开一堆窗口,有太多的基础知识感觉没有掌握清楚。行动是打败焦虑的方法,只要行动起来我就一定会有收获!
2024.2.28开学啦,要进入冲刺阶段了!!重新更新一下文章因为整个04做完了
目录
<1>.变量上标明@Value("${yml中的名称}"),前提是,属性值写在application.yml中
<2>.@ConfigurationProperties(prefix=" "),单独使用,不用配合@Value。
<3>.@PropertySource :加载指定的配置文件,通常配合@Value注解使用。
5.1拓展 @RequestBody、@PathVariable、@RequestParam三个注解用法与区别
7.response.setContentType的固定相应格式(常见)
10.BeanUtils.copyProperties的用法
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()时一般是浅拷贝,就是把原对象中的值复制到待复制对象
深拷贝:深拷贝会创建一个完全独立的新对象,递归地复制所有的子对象,确保完全独立性;一般对象包含可变对象,如对象为可变对象(如列表、字典等)时。深拷贝后的两个对象是完全独立的两个对象!
浅拷贝:只复制最外层对象,内部的嵌套对象仍然是原始对象和复制对象共享的。一般当对象只包含简单的数据类型(如整数、字符串等)时。复制对象中的列表仍然引用原始对象的列表,因此修改一个列表将同时影响两个对象。