项目知识盲区六
项目知识盲区六
Spring提供的Assert断言工具类
Intellij IDEA设置@Author文件头注释
IntelliJ IDEA 快捷键说明大全(中英对照、带图示详解)
IntelliJ IDEA 快捷键说明大全(中英对照、带图示详解)
@RequiredArgsConstructor
大家平时使用spring依赖注入,都是怎么写的?
@Service
public class OrderService {
@Autowired
private UserService userService;
}
是不是很熟悉的感觉?但是呢 如果你用IDEA的话呢,它会提示你
Field injection is not recommended
大概就是spring 不推荐建使用这个方式。原因网上很多啦:https://blog.csdn.net/github_38222176/article/details/79506392
下面就是spring推荐的写法:
@Service
public class OrderService {
private final UserService userService;
@Autowired
public OrderService(UserService userService) {
this.userService = userService;
}
}
若是注入的类太多的话呢,看起来挺繁琐的。最近偶然在网上发现使用Lombok可以写出简洁的代码:
后发现该方法有几率导致Spring循环引用问题,所以还是不推荐使用
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OrderService {
//这里必须是final,若不使用final,用@NotNull注解也是可以的
private final UserService userService;
}
这样写实际上编译后和spring推荐的写法是一样的哦,是不是很简洁
mybaits,mybaits-spring官方文档
spring cloud 中文文档
@RequestBody和@RequestParam和@RequestPart
1.@RequestBody
使用此注解接收参数时,适用于请求体格式为 application/json,只能用对象接收
2.@RequestParam
接收的参数是来自HTTP 请求体 或 请求url 的QueryString中
只能用来接收基本数据类型、String 或者MultipartFile类型,不能同时接收请求体中非String(json)和MultipartFile两种类型同传的form-data请求体.
3.@RequestPart
可以同时上传文件和json(任意)两种格式的form-data请求体.
@RequestPart
@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。
支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的
@RequestParam
@RequestParam支持’application/json’,也同样支持multipart/form-data请求
区别
当请求方法的请求参数类型不是String 或 MultipartFile / Part时,而是复杂的请求域时,@RequestParam 依赖Converter or PropertyEditor进行数据解析, RequestPart参考 ‘Content-Type’ header,依赖HttpMessageConverters 进行数据解析
当请求为multipart/form-data时,@RequestParam只能接收String类型的name-value值,@RequestPart可以接收复杂的请求域(像json、xml);
@RequestParam 依赖Converter or PropertyEditor进行数据解析, @RequestPart参考’Content-Type’ header,依赖HttpMessageConverters进行数据解析
前台请求:
jsonData为Person对象的json字符串
uploadFile为上传的图片
后台接收:
- @RequestPart可以将jsonData的json数据转换为Person对象
@RequestMapping("jsonDataAndUploadFile")
@ResponseBody
public String jsonDataAndUploadFile(@RequestPart("uploadFile") MultiPartFile uploadFile,
@RequestPart("jsonData") Person person) {
StringBuilder sb = new StringBuilder();
sb.append(uploadFile.getOriginalFilename()).append(";;;"));
return person.toString() + ":::" + sb.toString();
}
2.@RequestParam对于jsonData的json数据只能用String字符串来接收
@RequestMapping("jsonDataAndUploadFile")
@ResponseBody
public String jsonDataAndUploadFile(@RequestPart("uploadFile") MultiPartFile uploadFile,
@RequestParam("josnData") String jsonData) {
StringBuilder sb = new StringBuilder();
sb.append(uploadFile.getOriginalFilename()).append(";;;"));
return person.toString() + ":::" + sb.toString();
}
总结
当请求头中指定Content-Type:multipart/form-data时,传递的json参数,@RequestPart注解可以用对象来接收,@RequestParam只能用字符串接收
相关文章
- IDEA打包maven项目同时带上依赖
- Android 组件化(一)项目模式管理、模式切换
- Lucid EDI需求分析及项目注意事项
- 项目首先是预算制约 Budget-based,关键知识大爆料
- NLP知识图谱项目合集(信息抽取、文本分类、图神经网络、性能优化等)
- 小型Web项目,团队成员之间应该如何进行协作?
- 【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )
- Android开发把项目打包成apk详解编程语言
- Linux C 开发项目:挑战自我,收获成功(linuxc开发项目)
- 助力网安人才培养 360推“高校网络安全技术评测项目”
- 从零开始Vue项目中使用Redis(vue使用redis)
- 让SSM项目更加健壮Redis强力助力(ssm项目应用redis)