Skip to content

littlefishercoder/littlefisher-system

Repository files navigation

LittleFisher 环境搭建 个人学习

《计算机程序的构造和解释》中写到过
代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已 所以请编写代码时注意代码编写规范,不要一段时间后自己都看不懂自己的代码

构建结果

Build Status

个人博客

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 通用MapperXxxMapper.xml无需配置sql,常用sql自动封装使用);MyBatis Generator(自动生成文件,做了改造,包括生成的注释,针对于通用Mapper生成不同的注解,对import做顺序改造,对model生成Builder建造者模式工具类);PageHelperMyBatis的分页插件)
  • 使用Swagger接口测试工具,能够通过页面进行接口测试(针对于Controller层进行测试)
  • 其他的功能还有待大家去探索

技术选型

  • Maven
  • Spring
  • Spring Boot
  • SpringMVC
  • MyBatis
  • MyBatis Generator
  • MyBatis 通用Mapper
  • Swagger3
  • Log4j2
  • MySQL
  • Druid
  • PageHelper
  • Guava
  • 部分功能的二次封装
  • Kafka
  • Gson
  • Oval Validation
  • Apache Shiro
  1. 环境搭建
  • 配置Maven中央仓库:项目目录下有Maven的配置文件settings.xml文件,修改该文件中的本地仓库目录localRepository为自己系统下目录即可
  • IDE导入项目,需要 JDK1.8+
  • 配置Spring Boot启动参数,添加-DSYSTEM_HOME=\PATH\TO\YOUR\SYSTEM_HOMESYSTEM_HOME在项目目录下;或者在系统环境变量中增加SYSTEM_HOME,对应值也是SYSTEM_HOME的系统路径
  1. 开发前请安装相关检查工具,并将pre-commit文件复制到.git\hooks目录下,这样提交时会预先检查一遍代码规范(必须使用Bash命令行才有用)(暂时没有开发)

  2. 使用PMD的配置文件时,lint目录下有2个版本的配置文件,分别对应PMD的不同的2个版本,导入的时候只要有其中一个能用即可,校验的规则是一样的

  3. 所有的业务逻辑都写在对应的Command中,因为业务回滚是针对Command执行的,如果在Command外抛出异常,无法进行回滚

  4. 抛出异常统一使用BaseAppException,同时需要在SYSTEM_HOME/resource/下进行配置,或者抛出异常的时候同时设置message,推荐在SYSTEM_HOME/resource/下进行配置,便于后续的修改

  5. 不论是svn提交还是git(git所需忽略文件已放入.gitignore文件中)提交,统一忽略部分文件,因为这些文件在不同人的PC下,一般都是不一样的,如果提交了,其他人更新代码时容易产生冲突。具体忽略文件请参考.gitignore文件

  6. 目录下各个以.sample结尾的都是样例文件,需要修改文件中部分内容后,同时把名字上的.sample删去

  7. Controller编写要带上Swagger相关注解,以便于接口测试时的阅读

  8. 修改IDE中关于xml的配置,设置每行的最大长度为120Tab替换为2个空格。IDEA中默认使用2个空格替换Tab的,如图为Eclipse中的配置位置 修改xml文件的配置

  9. 集成功能使用与介绍

  • Swagger UI接口测试。启动启动Spring B后,进入http://{ip}:{port}/{contextPath}/swagger-ui.html查看,可以直接在界面中对接口进行测试。其中ip为本机ipportapplication.ymlserver.port所配,默认为8080contextPathapplication.ymlserver.servlet.context-path所配置
  • Druid监控界面,启动Tomcat后,进入http://{ip}:{port}/{contextPath}/druid查看
  • Command日志打印功能集成,每次请求Command都会进行日志的打印 日志信息
  • PageHelper使用。在列表查询之前调用PageHelper.startPage(pageNum, pageSize);,一定要是紧接着列表查询之前。具体PageHelper使用规则,参考github-PageHelper PageHelper
  • Mybatis generator使用。在blog-intf项目下,有一个generatorConfig.xml文件,针对该文件做部分修改,然后执行mybatis generator生成Mapper的命令即可。生成的model已经附带Swagger UI所需注解,同时针对于import信息也进行了优化,可以通过checkstype的检查。生成的Mapper接口,集成了通用的CRUD操作,个性化的接口SQL操作再另外定义即可。具体通用Mapper可参考github-MappergeneratorConfig.xml
  • 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变更部分命令