# Spring脚手架 **Repository Path**: alan.li2015/spring_scaffolding ## Basic Information - **Project Name**: Spring脚手架 - **Description**: 基于Spring boot构建的后端服务框架 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2020-06-11 - **Last Updated**: 2021-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring脚手架 #### 项目介绍 基于Spring boot构建的后端服务框架 #### 软件架构 整体项目基于Spring boot配合Mybatis构建,maven做打包与依赖工具。项目中用到了druid做数据库连接池,pagehelper做数据查询分页,guava为Java工具包, fastjson处理json格式数据,okhttp作为http连接工具类。 #### 安装依赖 1. 项目依赖于lombok,对应IDE环境中提前安装lombok插件 2. 工具集成有HuTool,具体使用方法网上查阅 3. 项目已集成基于Redis的分布式锁,具体使用参考封装工具类RedisUtils 4. 项目集成二维码识别与生成功能,实现主流实现方案,参考QRCodeUtils 5. admin项目集成权限安全框架为Shiro,框架已集成,可直接使用 6. 项目已集成RabbitMQ,可直接参考TestRabbitSender使用 7. 通用拦截器中已添加对外部请求参数的打印,留意项目日志。若需打印某函数方法的入参出参等信息,在方法上加注解@Log 8. 推荐Mybatis-generator-gui工具:https://github.com/zouzg/mybatis-generator-gui 9. 接口文档默认集成Swagger可视化文档工具,项目启动后访问地址http://xxx:8080/swagger-ui.html/ 10. 项目整合了JavaMelody监控平台,启动应用后访问http://xxx:8080/monitoring即可访问看到应用运行状况 11. 项目集成的日志打印插件为log4j2,众所周知,log4j2在各项性能上已完全超越log4j、logback 12. 项目使用ScriptEngineManager运行Js脚本,可应用在规则引擎、动态工作流等业务的具体场景中 #### Linux需装软件清单 1. MySQL8.0+ 2. JDK11+ 3. Redis 4. MongoDB(可选) 5. RabbitMQ Server 3.6+ #### 使用说明 1. 推荐Redis可视化客户端:RedisStudio 2. SQL导入脚本在db/import.sql 3. 项目打包命令:mvn clean install -DskipTests 4. 项目启动命令:nohup java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dspring.profiles.active=prod -jar api.jar > nohup.out 2>&1 & #### 数据库表结构、字段设计规范 1. 所有字段不可为空,必须要有默认值。varchar类型默认空字符串,timestamp默认当前时间戳,int类型默认1或0; 2. 所有表中主键名称默认均设置为id,bigint(20),无符号,自增长。如需业务主键,自行添加额外字段做主键; 3. 所有表中关于时间的字段created_time和updated_time字段为必有字段,创建时间一经创建不得更新,之后每次表数据变更,更新updated_time字段; 4. 所有表中添加valid字段(tinyint类型,0代表无效,1代表有效)标记逻辑删除 5. 合适的存储引擎,一般InnoDB,合适的字符集,强制utf8mdb4,兼容emoji 6. 添加索引、字段注释 7. 字段类型保证够用情况下尽可能小、确保可读性、字段值避免Null