littlefisher-system
littlefisher-system copied to clipboard
个人博客
LittleFisher 环境搭建 个人学习
《计算机程序的构造和解释》中写到过
代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已
所以请编写代码时注意代码编写规范,不要一段时间后自己都看不懂自己的代码
构建结果
个人博客
http://www.littlefisher.site/ 欢迎博客上评论
Github
欢迎加星!!!
代码分层
代码全都放在code包下
littlefisher-parent 总的父包
-littlefisher-blog-parent 跟博客相关的业务内容
-littlefisher-core-parent 基础服务代码
-littlefisher-spring-boot-autoconfigure 配置application.yml可读的配置信息
-littlefisher-user-parent 跟用户相关的业务内容
-littlefisher-web-parent 包装以上内容,对外提供MVC服务
以littlefisher-user-parent 举例描述分层
littlefisher-user-biz 业务接口描述层
littlefisher-user-biz-impl 业务接口实现层
littlefisher-user-common 公共定义层,包括工具,枚举等
littlefisher-user-dal 数据访问及远程调用接口层
littlefisher-user-dal-impl 数据访问及远程调用实现层
littlefisher-user-deploy 发布层,定义配置文件及打war包
项目搭建路径
http://swaggerui.littlefisher.site/
由于整个工程都是后端内容,所以页面展示的内容仅是一个Swagger测试页面而已
项目介绍
该工程使用SpringBoot搭建,其目的是封装业务底层框架,让开发人员更集中于业务的开发。
- 该工程使用命令模式进行业务处理,在开发逻辑上屏蔽
Service层过于庞大冗余的可能性(不知道是否遇到过某个Service层的类超过7000行的,这种代码的可读性实在是差)。使用命令模式强制拆分不同业务逻辑,避免超长类文件。 - 使用
MyBatis一整套的插件,包括MyBatis 通用Mapper(XxxMapper.xml无需配置sql,常用sql自动封装使用);MyBatis Generator(自动生成文件,做了改造,包括生成的注释,针对于通用Mapper生成不同的注解,对import做顺序改造,对model生成Builder建造者模式工具类);PageHelper(MyBatis的分页插件) - 使用
Swagger接口测试工具,能够通过页面进行接口测试(针对于Controller层进行测试) - 其他的功能还有待大家去探索
技术选型
MavenSpringSpring BootSpringMVCMyBatisMyBatis GeneratorMyBatis 通用MapperSwagger3Log4j2MySQLDruidPageHelperGuava- 部分功能的二次封装
KafkaGsonOval ValidationApache Shiro
- 环境搭建
- 配置
Maven中央仓库:项目目录下有Maven的配置文件settings.xml文件,修改该文件中的本地仓库目录localRepository为自己系统下目录即可 - IDE导入项目,需要 JDK1.8+
- 配置
Spring Boot启动参数,添加-DSYSTEM_HOME=\PATH\TO\YOUR\SYSTEM_HOME,SYSTEM_HOME在项目目录下;或者在系统环境变量中增加SYSTEM_HOME,对应值也是SYSTEM_HOME的系统路径
-
开发前请安装相关检查工具,并将
pre-commit文件复制到.git\hooks目录下,这样提交时会预先检查一遍代码规范(必须使用Bash命令行才有用)(暂时没有开发) -
使用
PMD的配置文件时,lint目录下有2个版本的配置文件,分别对应PMD的不同的2个版本,导入的时候只要有其中一个能用即可,校验的规则是一样的 -
所有的业务逻辑都写在对应的
Command中,因为业务回滚是针对Command执行的,如果在Command外抛出异常,无法进行回滚 -
抛出异常统一使用
BaseAppException,同时需要在SYSTEM_HOME/resource/下进行配置,或者抛出异常的时候同时设置message,推荐在SYSTEM_HOME/resource/下进行配置,便于后续的修改 -
不论是
svn提交还是git(git所需忽略文件已放入.gitignore文件中)提交,统一忽略部分文件,因为这些文件在不同人的PC下,一般都是不一样的,如果提交了,其他人更新代码时容易产生冲突。具体忽略文件请参考.gitignore文件 -
目录下各个以
.sample结尾的都是样例文件,需要修改文件中部分内容后,同时把名字上的.sample删去 -
Controller编写要带上Swagger相关注解,以便于接口测试时的阅读 -
修改
IDE中关于xml的配置,设置每行的最大长度为120,Tab替换为2个空格。IDEA中默认使用2个空格替换Tab的,如图为Eclipse中的配置位置
-
集成功能使用与介绍
Swagger UI接口测试。启动启动Spring B后,进入http://{ip}:{port}/{contextPath}/swagger-ui.html查看,可以直接在界面中对接口进行测试。其中ip为本机ip;port为application.yml中server.port所配,默认为8080;contextPath为application.yml中server.servlet.context-path所配置Druid监控界面,启动Tomcat后,进入http://{ip}:{port}/{contextPath}/druid查看Command日志打印功能集成,每次请求Command都会进行日志的打印
PageHelper使用。在列表查询之前调用PageHelper.startPage(pageNum, pageSize);,一定要是紧接着列表查询之前。具体PageHelper使用规则,参考github-PageHelper
Mybatis generator使用。在blog-intf项目下,有一个generatorConfig.xml文件,针对该文件做部分修改,然后执行mybatis generator生成Mapper的命令即可。生成的model已经附带Swagger UI所需注解,同时针对于import信息也进行了优化,可以通过checkstype的检查。生成的Mapper接口,集成了通用的CRUD操作,个性化的接口SQL操作再另外定义即可。具体通用Mapper可参考github-Mapper
Guava工具介绍在博客中有介绍Kafka的使用在工程中已经加入,只不过没有大规模使用例子,具体的配置信息参考application.yml配置内容Activiti单独使用了一个模块,暂时没有引入到littlefisher-parent中,因为还没有使用到的地方Oval Validation的校验框架引入在Command中,当代码执行到Command时会进行校验
项目启动
- 在
littlefisher-parent工程上,执行maven命令mvn clean install -DskipTests - 在
blog-web工程上,找到Application类,执行main方法即可 - 在浏览器中输入
http://{ip}:8080/blog-web/swagger_ui.html,即可访问到swaggerUI界面 - 以上所涉及
maven命令皆为完整命令,可根据不同IDE变更部分命令