1024创新实验室-公告

助力抖音1000个粉丝,开播写代码🎉🎉

打开【抖音APP】-点击【左上角侧边栏】-【点击扫一扫】-【进行关注】🎉🎉

和1024创新实验室一起,热爱代码,热爱生活,永远年轻,永远前行🎉🎉


Skip to content

然后熟悉Java项目结构

一、整体结构

1.1、结构解读

项目整体结构如下:

java
/smart-admin-api/
|-- sa-admin/           【springboot项目】是admin端的业务逻辑,最终以springboot 启动
|-- sa-base/            【jar项目】是通用的类和业务逻辑,最终以jar形式,被sa-admin或者其他项目使用
|-- pom.xml             【pom.xml文件】父级pom.xml文件,定义共用依赖、模块、多环境profile

1.2、优秀的扩展性

如果将来 smart-admin要做一个app端的话,只需要加一个 sa-app的项目就可以了,其中sa-app只完成app端的项目业务逻辑接口,如下:

java
/smart-admin-api
|-- sa-admin/
|-- sa-base/
|-- sa-app/

最终会运行两个java进程:

  • sa-admin 进程,满足 后管的业务api
  • sa-app 进程,满足 移动端的业务api

如果再加一个 数据大屏的话,可以再加一个项目sa-data项目,用于提供数据大屏的接口。

二、maven多模块

目录smart-admin-api 使用的是 maven多模块 项目

  • 即最顶层有一个 parent/smart-admin-api/pom.xml文件
  • /smart-admin-api/pom.xml文件中定义所有依赖和依赖的版本号,具体如下:

2.1、定义parent

xml
    <groupId>net.1024lab</groupId>
    <artifactId>sa-parent</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

2.2、定义多模块 moudle

java
  <modules>
      <module>sa-base</module>
      <module>sa-admin</module>
  </modules>

2.3、提取依赖版本

xml
  <properties>
        <java.version>1.8</java.version>
        <springboot.version>2.7.5</springboot.version>
        <spring-mock.version>2.0.8</spring-mock.version>
        ....
        ....
  </properties>

2.4、定义多环境profile

xml
<profiles>
        <!--开发环境,即 默认环境-->
        <profile>
            <id>dev</id>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!--测试环境-->
        <profile>
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
            </properties>
        </profile>
        <!--预发布环境-->
        <profile>
            <id>pre</id>
            <properties>
                <profiles.active>pre</profiles.active>
            </properties>
        </profile>
        <!--生产环境-->
        <profile>
            <id>prod</id>
            <properties>
                <profiles.active>prod</profiles.active>
            </properties>
        </profile>
    </profiles>

三、sa-base项目讲解

3.1、 base的初衷

如果你接触过多模块,肯定听过类似于basecommon的字样,那么sa-base 项目也是同理,来存放一些通用的类;本项目中 sa-base 主要有如下四个作用:

  • 1) 通用的无状态的类,如:javabean对象、常量、异常、枚举、错误码、工具类、序列化类等等
  • 2) 通用的配置,如:mybatis、心跳、数据库、http、环境变量、reload、重复提交 等等配置
  • 3) 通用支撑类的业务逻辑,如:缓存、文件上传、验证码、数据字典、操作记录、token、序列号、加密 等等
  • 4) 全局的常量维护,如:redis key前缀、错误码范围、url前缀 等等

3.2、yaml文件

很多人觉得对于base类的项目都是jar,没有配置文件,但是在 smart-admin中,里面还有个配置文件是为什么?
根本原因 因为 sa-base中提供了以上 四类的功能都需要配置,而且这些配置 在 其他项目中还可能一样;比如:

  • 数据库地址,各个项目连接的都是一个数据库
  • oss配置, 各个项目也是一个通知
  • redis 配置,也是一样的等等
  • 等等还有其他

所以:
在base项目中,加入了 sa-base.yaml配置文件,并使用YamlProcessor类将sa-base.yaml的配置注入到了,其他引用sa-base的项目中。
感兴趣的小伙伴可以研究下YamlProcessor这个类。

3.3、common 通用类

通用类在sa-base项目中的 net.lab1024.sa.base.common包,具体作用如下:

vim
/common
|--- annoation    通用注解,如@NoNeedLogin
|--- code         返回错误码,ErrorCode`
|--- constatnt    通用的常量
|--- controller   父类BaseController
|--- domain       通用javabean,如返回对象RequestDTO,分页PageResult等
|--- enumeration  全局枚举接口,BaseEnum,配合前端的 vue-enum
|--- exception    通用自定义异常,如业务异常等
|--- json         通用的 json 序列化、反序列化,如文件、字典等
|--- swagger      通用的swagger类,配合后端的BaseEnum和前端的vue-enum
|--- util         通用工具类(本项目虽使用hutool,但是还有一些独有的工具类)
|--- validator    表单校验,配合 BaseEnum的枚举校验 @CheckEnum

3.4、base 配置类

配置类在sa-base项目中的 net.lab1024.sa.base.config包,具体作用如下:

vim
/config
|--- AsyncConfig         异步注解@Async的线程池配置
|--- CorsFilterConfig    跨域请求配置
|--- DataSourceConfig    数据库连接池druid配置
|--- FileCloudConfig     文件OSS配置
|--- HeartBeatConfig     心跳配置
|--- MvcConfig           MVC配置
|--- RedisConfig         redis配置
|--- RepeatSubmitConfig  重复提交配置
|--- ScheduleConfig      定时任务配置
|--- SystemEnvironmentConfig   运行时环境配置

3.5、base 支撑类

支撑类在sa-base项目中的 net.lab1024.sa.base.module.support包,起到**“支撑”**作用;

  • 基础功能:系统配置、字典、文件上传和下载、缓存cache 等
  • 日志功能:心跳日志、登录日志、操作日志、数据变动日志等
  • 校验功能:接口加密解密、防止重复提交、图形验证码等
  • 通用功能:表格自定义列、订单号生成等
  • 其他等

以上功能其实是 任何行业、任何系统 都所需要的一些基础功能,所以起了个名字,叫做:support,起到支撑的作用,同时也放到了 sa-base包中,以便各个项目使用。

四、sa-admin 项目讲解

4.1、理解admin

sa-admin项目是具体的 后台管理的业务代码项目,目录结构 符合 Java代码规范 V3
sa-admin项目中包含了 一个后管所常见的功能,比如:员工、部门、角色、权限、菜单等,同时也加入了一些其他功能,比如OA的 企业信息、通知公告等等

4.2、config包

sa-admin项目中,config包下只有三个类,为什么这么少呢,是因为引入了 sa-base,在sa-base项目中的config包有很多默认的配置,都引入了进来。

4.3、constant包

此包是sa-admin项目独有的常量类,比如 AdminRedisKeyConst是admin项目独有的redis的key;

4.4、重点module包

module中,具体拆成了两个包,一个是 business,业务包;另外一个是system 系统包; 具体理解:
将任何后管的系统工程拆成了两类:

  • 第一类是员工、部门、角色、权限、菜单等等,这类是系统必须有的,定义为system
  • 第二类是具体的业务,比如你是进销存系统,采购、入库、销售等,这种属于业务,定义为business

根据这两类划分,所以有了以上的两个子包,一个system,一个business
如果你在做一个进销存ERP系统,在搭建完smart-admin后,可以直接在business包中进行业务编码;结构如下:

java
module/
|---business                           业务模块
|---|----goods                           商品管理
|---|----|------GoodsController            商品controller
|---|----|------GoodsService               商品service
|---|----|------GoodsDao                   
|---|----order                           订单管理
|---|----|------OrderController            订单controller
|---|----|------OrderService
|---system                            系统模块
|---|----department                      部门管理
|---|----employee                        员工管理
|---|----role                            角色管理

4.5、重点yaml配置

在上面中讲解了 sa-basesa-base.yaml配置文件,会自动注入到其他项目中,所以如果sa-base.yaml中的配置满足了sa-admin项目的需求,我就不用任何配置。
那么对于sa-admin中独有的配置,比如端口号,那么只需要配置下端口好就可以了,比如在 application.yaml配置文件中,我配置了sa-admin的进程端口为 1024

yaml
server:
  servlet:
    context-path: '/'
  port: 1024
# swagger文档
swagger:
  host: localhost:${server.port}
  tag-class: net.lab1024.sa.admin.constant.AdminSwaggerTagConst

以上会覆盖掉 sa-base.yaml中对应的配置。


联系我们

1024创新实验室-主任:卓大,混迹于各个技术圈,研究过计算机,熟悉点 java,略懂点前端。
1024创新实验室 致力于成为中原领先、国内一流的技术团队, 以AI+数字化为驱动,用技术为产业互联网提供无限可能, 业务如下:
  • 教育领域(高职院校数字化、就业创业大数据平台、继续教育平台;在线教育系统、视频直播、题库等,包含:医学、应急管理、成考、专升本等)
  • 供应链领域(网络货运平台、大宗贸易进销存ERP、物流管理TMS、B2B电商、仓储WMS、AI提效等)
  • 中医领域(诊所数字化管理、互联网医院、AI辅助诊疗、中医适宜技术、在线云问诊、空中药房等)
  • AI+软件领域(软件定制外包、开源技术、数据大屏、国产化改造、技术升级换代、人员外包、技术顾问、技术培训等)
加微信: 卓大
拉你入群,一起学习
公众号 :六边形工程师
分享:赚钱、代码、生活
请 “1024创新实验室”
烩面里加肉
咖啡配胡辣汤,提神又饱腹
抖音 : 六边形工程师
直播:赚钱、代码、中医