哦,一转眼第一个工作后的项目已经温故而知新过了,不得不承认,收获蛮多的。
大概就是从一开始的努力模仿,到实操后的结果,再到为什么的独立思考,最后知其然的过程吧。
因此学习还真不能着急,就得一步一个脚印,踏实前进。急不来,时间会带给我想要的一切。
之前的第一个项目是spring + spring mvc的,现在开始学习&温故而知新第二个spring + spring mvc + spring boot + mybatis的项目。(这个项目之所以温故而知新的那么早,是因为马上我要开始我工作后的第三个项目了,而这个项目是需要我增删改查真刀真枪的上的,因此有必要在开战之前备好充分的粮草)
工作后的第二个java项目 spring + spring mvc +spring boot +mybatis
独立思考,慢慢拨开他的心,梳理整个项目的目录结构、每个文件、每行代码。到最后明白项目如何运行起来的,以及基础的增删改查controller要怎么搞。
思考与总结:
现在我的项目的通用设定,目前只要是来了新的项目,将项目代码下载下来后,我用idea打开后会做2件事
- 设置管理项目的maven home path 以及maven配置文件以及 最后maven管理本地jar包的位置(这个工作其实很有必要:因为现在大多java项目都是用maven管理,因此在idea去配置maven的路径以及maven工作的配置以及最后maven管理本地jar的位置)
- 设置项目的java开发工具包 sdk(这个工作也很重要,她告知了idea用哪套java规范编译运行java包)
项目的目录结构
spi core web common 这四个包。接下来,我们还是老样子,走一遍 这4个包。
好,现在一个个的品尝这些包子吧,哇,我快饿疯了。
common层
几乎这个阶段,再看代码已经不如第一个项目温故而知新的多了,没关系,正常的,坚持学习就可
api层
这个层就是包装对外的rpc接口,接触java后不仅有http接口了,还有系统间调用的rpc接口。
web层
先从web层搞起,因为前端的请求到系统是从web层分发过来的。
因为现在部署java项目都是基于容器部署,所以项目的架构都是面向容器设计的。之前做的node项目,nginx 还有项目的启动、停止bash脚本都是日常接触的,一般都是nginx需要人为维护配置,bash脚本也是需要手动执行。因此之前做node项目时,对nginx 以及启动停止脚本对项目的作用我还是略知一二的。现在这个项目就是集成在里面。
web层最重要的就是src/main/resources 文件夹里的配置文件,spring 框架会读取这的配置文件。
web层放启动类,启动类用来启动项目、读取spring boot的核心xml配置文件,spring boot项目启动时好用spring容器创建好各种对象。同时告知spring 容器读取对应的属性文件。spring boot项目的启动方法是一个main方法,也就是java项目的入口。
另外,在web层中,最常见的就是处理前端请求的controller。
controller里面有很多的常见注解,我们学学 。
@Controller:分发处理器将会扫描带有@Controller的注解的类中的带有@RequesrMapping/@PostMapping/@GetMapping的方法,对应url匹配后将请求交给某个匹配的方法处理。
@RequestMapping:映射request请求,可作用于类或方法上,匹配url
@GetMapping:映射request请求,匹配url及指定请求get方法
@PostMapping:映射request请求,匹配url及指定请求post方法
@ResponseBody
@RestController:=@Controller +@ResponseBody
另外,发现现在这个项目真是666,使用了swagger,这个东西我也是第一次接触。这个东西的使用很简单:引入pom,然后使用swagger对应的注解,最后就能自动生成对应的接口文档,简直了!就没有见过那么棒的东西!!!
swagger ui常见的注解。这些注解都是帮助swagger ui 来生成接口文档的啦
@ApiModel
@ApiModelProperty
@Api
@ApiOperation
core层
core层一般在src/test包下放一些单元测试的包,单测用于检验代码的行覆盖率、方法覆盖率等等
core=service+dao
因此在src/main/resources 会有对应的mybatis配置文件,指定对应的sql文件。mybatis对应的xml文件,dao一般就是接口、接口对应的xml文件 以及mybatis的配置文件.
service层
service层 其实就是定义service接口以及其实现类。对于单元测试来讲,一般重点监测service层及dao层。
wrapper包放一些调用外部接口的代码
最后,crud来一下子,实践出真知嘛,之后我快乐的国庆就要来喽