食谱项目接近尾声,虽说项目过程一波三折,但也学到了不少东西,例如oss云端存储,Linux服务器的入门使用,支付宝沙箱的使用,qq登录邮箱验证等等。都是一些平时老师不会教,但写项目要用到的技术。这次项目真的使我受益匪浅,所以写一篇博客记录一下在项目中遇到的问题、异常;学到的技术、思路;前后端交互中出现的矛盾、冲突等等。
1、接口参数同时包含multipartfile和java对象时,对象的注解应该使用@Valid而不是@RequestBody,不然会爆Unsupported Media Type。
在这里使用valid注解的时候又发现了自己idea的maven下载和配置贼慢,查了设置发现阿里云镜像仓库也已经配好,那是怎么回事?最后发现是阿里云仓库的证书问题,配置了之后果然maven快如闪电。在这里贴一下博文地址:SpringBoot使用maven下载不了jar包的问题 - 简书
2、项目部署到服务器后,调用阿里云oss上传文件的接口报错Permission denied(没有权限)。仔细翻了该接口的代码后,终于找到了罪魁祸首:
就是这行代码,会在服务器中新建一个file文件,但是又没有操作服务器文件夹的权限,才会报Permission denied。解决方法就是使用流传输数据,而不生成具体的file文件。(更改服务器相关权限应该也可以解决这个问题,笔者对linux不是很精通所以没有考虑这种方法)
3、mybatis关联查询的嵌套问题:我现在还是觉得mybatis的关联查询很麻烦,因为要在java实体类中开一个对象属性去接收两表联查的值。对象多了之后很容易写个嵌套出来。我的思路是User对象内什么都不要加,尽量在别的对象里加User对象,添加对象时确保被添加对象中没有此对象。
4、前后端交互问题:项目中前后端交互免不了掐架,我的建议是小不忍乱大谋,毕竟是大家的项目,都应该担起责任。
总结:这次项目对我的提升很大,学到了很多新技术和新思路,ssm框架的使用也大大提高了我的逻辑和解耦能力。但沉淀下来的才是精华,路还很长,不管这次项目写的怎么样,我已经收获到了我需要的东西。