Java工程架构定义

规范Java工程技术架构定义,降低架构初始化及常用组件的接入成本,提升研发效率

Posted by guanyang on 2022-06-08
Words 1.1k and Reading Time 4 Minutes
Viewed Times

架构目标

  1. 基于工程命名不够规范,制定工程命名规约,提升识别性
  2. 规范技术架构定义,方便后续可读性、维护性及扩展性
  3. 规范模块结构定义,方便新人快速理解上手
  4. 降低架构初始化及常用组件的接入成本,提升研发效率

架构源码

模块说明

  • spring-archetype-parent:archetype模板工程,用来创建后端服务的archetype
  • spring-simiple-demo:archetype模板源码,基于源码可以优化升级模板工程

应用架构

应用架构

依赖组件

  • 当前工程依赖了一些常用组件,避免重复造轮子,代码结构更统一,可以提升研发效率
  • 组件源码参考:guanyang/spring-base-parent
模块(artifactId) 说明 备注
spring-base-core 基础核心定义 参考文档
spring-base-util 常用工具类合集 参考文档
spring-base-csrf csrf组件 参考文档
spring-base-sign 接口签名组件 参考文档
spring-base-xss 接口参数xss校验组件 参考文档
spring-base-lock 分布式锁组件 参考文档
spring-base-log 日志组件 参考文档
spring-base-limit 限流组件 参考文档

快速使用指南

应用工程架构

应用工程架构

模块定义说明

模块序号 模块定义 模块说明 依赖序号 备注
1 demo-util 业务工具组件 ~ 【非必须】工具精炼抽象,多处使用
2 demo-dao 业务db操作组件 ~ 【建议添加】只有db相关操作
3 demo-common 外围依赖服务聚合组件 1 【建议添加】方便抽象成SDK
4 admin-api 后台服务接口契约定义 ~ 【非必须】方便扩展rpc
5 demo-service-api 对外服务接口契约定义 ~ 【建议添加】方便扩展rpc
6 demo-service-java 对外服务应用 1,2,3,5 【建议添加】应用服务进程
7 demo-admin-java 后台服务应用 1,2,3,4 【非必须】管理后台,跟对外服务应用隔离

demo-admin-java应用可选,根据业务规模决策是否需要隔离部署,小应用可以将admin和service合并

相关依赖

  • 本工程依赖guanyang/spring-base-parent 相关组件
  • spring-base-parent下载到本地,执行mvn clean install,将相关组件生成到本地

基于模板创建应用

  • 将archetype模板生成到本地
    1
    mvn clean install
  • 基于archetype模板创建工程,命令如下:
mvn archetype:generate  \
    -DgroupId=org.gy.framework \                    //替换成自定义groupId
    -DartifactId=spring-demo-01 \                    //替换成自定义artifactId
    -Dversion=1.0.0-SNAPSHOT \                    //替换成自定义version                
    -Dpackage=org.gy.framework.demo \            //替换成自定义package路径
    -DarchetypeArtifactId=spring-archetype-service \        //该模板已经上传私服,直接使用
    -DarchetypeGroupId=org.gy.framework \
    -DarchetypeVersion=1.0.0-SNAPSHOT

本地调试开发

  • 初次启动【xxx-service-java】,需要调整数据源配置,否则启动报错
    • 数据源配置路径:xxx-service-java/src/main/resources/application-live.yml
  • 该框架已经默认引入mybatis plus中间件,支持代码自动生成及数据源常用配置
    • 代码自动生成入口:xxx-dao/src/test/java/${package}.dao/MybatisAutoGeneratorHelper.java
    • mybatis-plus常用配置入口:xxx-service-java/src/main/resources/application.yml,一般不需要修改,默认即可
  • 代码自动生成使用说明,只需要调整以下变量即可,其他可以保持不变,入口类:MybatisAutoGeneratorHelper
    • url:数据源地址
    • username:数据库用户名
    • password:数据库密码
    • author:代码生成者名字,仅作标识而已,可随意指定
    • tableNames:要生成的数据库表名,可以指定多个

相关文档

Change Log

1.0.0-SNAPSHOT

  • 统一架构分层结构定义,方便扩展及治理
  • API统一异常、错误码规范定义,参考ApiBizException
  • 统一全局异常处理器,参考ServiceExceptionHandler
  • 引入mybatis plus中间件,支持代码自动生成及数据源常用配置,代码自动生成参考MybatisAutoGeneratorHelper
  • 支持csrf、xss安全加固,参考示例TestController
    • 在需要csrf验证的Controller方法加上@CsrfCheck注解
    • 请求对象需要添加@Valid或者@Validated注解才会进行xss校验
  • 支持traceid和日志切面记录方法调用日志,参考示例TestController
    • 日志@LogTrace支持类、方法层级定义

If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !

...

...

00:00
00:00