创建一个新的项目,引入依赖包,建模块,复制粘贴各种模板,数据库配置等,想起来都是一件头疼的事,看了这篇文章,也许可以治你的头疼病。本次分享的是项目的构建过程和构建完成的项目模板分享。以后需要构建项目只要来复制一下就可以啦,超简单省事,你值的拥有。
1. IDEA创建一个maven项目
平时用的都是IntelliJ IDEA,具体创建项目流程,怎么去一通乱点,然后截图指导,这些就不做了,这个是作为一个开发人员的必备技能。这种教程在度娘上一搜也是一堆。
模板项目包含以下几个模块:
itcrud-api
:这个模块是提供给外部访问的入口,也就是所谓Controller层itcrud-service
:服务层,核心业务代码集中地,也就是Service层itcrud-dao
:数据层,用于连接数据库,和数据库交互的部分,也就是Dao层itcrud-common
:整个项目共用组件存储的位置,如共用的常量类、工具类、枚举类等等itcrud-entity
:这一层很多项目都是没有的,不单独出来也是没有问题的,但是个人喜欢分类清晰干净的项目。此模块用来存储VO
、DTO
的,DTO
用来接受外部请求参数封装,VO
用于给外部响应数据封装
模块介绍完,再说说里面包含的具体内容。
2. maven依赖
这个没啥说的,pom.xml
引入即可,具体内容可以看pom.xml
文件的内容。
3. 数据库、redis、mapper的配置
数据库mysql
:在application.properties
配置文件中配置数据库连接的相关信息,这里不需要设置连接池信息,因为pom.xml
文件中已经引入了Druid
和springboot
的整合,使用默认配置就好。Redis
:基本百分之99.99%项目都会用到的非关系型数据库,用于缓存数据、session共享、分布式锁等,配置也是比较简单的,基本都是有默认值,配一下具体的host
即可,如果你需要设置具体的连接数据,可以自己修改,在application.properties
配置文件中已经把主要的几个参数列出来了。mapper
:application.properties
配置文件中指定mapper.xml
文件的所在的位置,然后指定应用驼峰规则,其他配置都使用默认,需要特殊添加的加上即可。还有就是在Application
启动类里面加上对具体mapper
接口类的扫描。
4. 统一异常处理
在itcrud-api
里面创建了一个ItcrudExceptionHandler
类,用Spring
自带的Controller
切面工具(@ControllerAdvice
注解),对异常进行处理。具体处理逻辑参照具体的代码。
5. 请求出参入参和业务处理时间的日志输出
利用Spring
的面向切面编程思想,对所有的Controller
进行切入,采用around
方式,获取请求的参数和将会响应的数据,并记录业务处理的时间,最后将结果输出到日志文件中或者控制台中。注意里面是将输出日志的操作放在finally
代码块里面,防止代码异常导致日志信息不能正常输入问题。
此切面没有做日志信息脱敏操作,如果需要脱敏可以参考之前的文章:项目中手机、姓名、身份证信息等在日志和响应数据中脱敏操作
6. 请求头requestId的使用
在这个模板项目中所有的请求都是要带上requestId
参数,此参数是放在请求头里面,用于做日志的跟踪。思路就是在切面里面获取requestId
,然后将requestId
放到MDC
中,在logback.xml
文件中取出放到日志信息中,具体实现看之前的文章:logback新认识(二):logback之MDC日志跟踪、日志自定义效果
7. RedisUtils的封装
如果你自己的项目有一套Redis
工具类的封装的话,模板项目里面的可以删掉不用,如果没有,不妨用一下,我自己封装的一些常用操作API。我自己博客系统里面是用的这个,自我感觉还不错😄。
8. 线程池创建
springboot本身是有自带的线程池,个人还是习惯创建自己的线程池。线程池的定义在ThreadPoolConfig
类中,可以通过多个方法创建多个线程池。不过bean
的名称需要改一下,毕竟都是交给Spring
管理,不要因为bean
名称冲突导致项目启动直接跪掉。
9. 总结
整个项目的架构:Spring+Springboot+mybatis+redis+mysql
,最基础的架构技术选型。内部包含异常的统一处理、请求入参出参的日志输出、Redis
的工具类、线程池的创建、MDC
日志跟踪、logback
的详细配置、数据库+redis+mapper
的基本配置等。还有一个上面没有列出来的,就是ResponseVO
类的定义,这个类用来做统一格式响应数据的封装,一个字:好用。