针对参加工作以来遇到的业务问题,搭建一套自认为较独立的业务模块,命名为PAP 快速开发框架。
技术栈:技术栈为SpringBoot2.x配套SpringCloud、Mybatis、Redis、RabbitMQ、Activiti
基础模块:1、PAP-POM 1、定义一个Maven项目,packaging设定为pom,用来约定依赖组件的版本号,保证所有PAP项目,所依赖的外部组件的版本号保持相同,防止不必要的组件间调用异常。 2、由于目前的Maven项目中,parent父节点只能有一个,为了防止sprint-boot项目尝试定义多个parent节点,参照 springboot多个parent解决。 那么业务模块引用 PAP-POM 就可以采取如下方式
<!--自定义统一依赖版本的基础项目,其他的项目在引用依赖的时候直接继承该项目即可,这样使用的依赖版本就能保持一致性。--><dependencyManagement><dependencies><dependency><!--ImportdependencymanagementfromSpringBoot--><groupId>com.pap</groupId><artifactId>pap-pom</artifactId><version>0.0.1-RELEASES</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>2、 PAP-OBJ PAP-BASE 1、一些POJO类、通用的BASE基类、Util方法; 2、PAP-BASE 中,含有一些自定义的MybatisGeneratorPlugin,用来方便的进行代码生成操作(PAP-CODE-GENERATOR)。 扩展mybatis-generator-plugin查看 mybatis-genarator自定义插件 mybatis-generator自定义注释 mybatis-generator基类继承 3、 PAP-CODE-GENERATOR 1、此代码生成器分为两部分,一个是基于Mybatis-generator-plugin插件的代码生成器,一个是基于freemarker的代码生成器,需要修改mybatis-generator.properties文件的参数 1.1、修改数据源:classPath driverClass connectionURL userId password 1.2、修改文件路径:targetProject targetPackageBase 工作空间所属路径与package路径 1.3、表名: tableName domainObjectName alias 表名、映射的实体类名称、表的别名(防止多张表的同名列) 4、 PAP-CALCULATE 1、JAVA的四则运算计算器,解决Excel的公式,自定义的四则运算公式 java四则运算,并可完成自定义函数表达式功能 JAVA计算器自定义公式解决EXCEL计算公式问题 自定义基础模块:自定义starter 1、 pap-bean-spring-boot-starter 1、分布式主键生成,使用twitter的IDWorker生成器; 2、spring自定义参数解析器,将request.header里面的用户数据进行解析成对象,方便controller使用; 2、pap-logback-operdb-spring-boot-starter 1、自定义操作日志,将用户的操作记录异步持久化数据库中; 2、使用LogbackInterceptor,将数据按需异步持久化,同时扩展Logback默认的4个字段为32个,方便参数处理(源码Gitee);
3、pap-sequence-starter 1、ERP项目中,会有大量的流水号生成的功能,将此处的功能进行抽离; 2、支持DB(乐观锁)或者Redis(原子性incr)两种方式,按需引入(详见ReadME.md 文件); 业务基础组件: 1、PAP-ACTIVITIY 1、工作流,详见ReadME.md 流程在线可视化定义、初始化任务、认领任务、我的申请、我的代办、批注历史、任务审批、审批拒绝; 2、PAP-RabbitMQ 1、消息中间件,注意此处可以通过消息中间件解决分布式事务最终一致性的问题(AOP+守护进程); 2、事务消息 3、死信队列,邮件发送; 3、PAP-UPLOAD 1、统一文件上传: 注意修改临时上传文件,防止操作系统将临时文件夹清空造成业务中断; 4、PAP-SPRING-BOOT-SPI-DEMO 1、SPI扩展点:SPI解决Saas的定制化服务问题; 5、PAP-SPRING-BOOT-ADMIN 1、软件监控:解决服务可用性监控;
业务组件:1、PAP-GATEWAY、 PAP-UUA、JWT 1、使用spring-cloud-starter-gateway定义网关,同时使用spring-boot-starter-security进行鉴权(使用JWT进行登录用户信息维护); 2、定义PAP-UUA工程,此工程封装JWT操作(登录获取Token、解析Token、刷新Token),gateway网关透传uua项目,不做权限验证; 3、具体的业务子系统需要进行鉴权操作,则通过JWT整合security进行登录用户鉴权处理。 Security认证管理器JWT.
评论