专栏名称: Java基基
一个苦练基本功的 Java 公众号,所以取名 Java 基基
目录
相关文章推荐
PChouse家居APP  ·  我宣布,原木+复古绿才是「治愈系」颜值顶流! ·  8 小时前  
PChouse家居APP  ·  住进玻璃阳光大宅,光影成诗的家美得不像话 ·  2 天前  
PChouse家居APP  ·  氛围美学统治区!复古与摩登交织的180㎡,越 ... ·  4 天前  
消费日报官方平台  ·  年货消费为家居行业全年发展“开好头” ·  3 天前  
51好读  ›  专栏  ›  Java基基

一个优秀 Maven 项目,各 Model 间最佳继承设计方案

Java基基  · 公众号  ·  · 2024-05-24 11:55

正文

👉 这是一个或许对你有用 的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入 芋道快速开发平台 知识星球。 下面是星球提供的部分资料:

👉 这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本

来源:网络


所以说一个优秀的Spring Boot模块设计需要具备那些基本要素

1、 单一职责原则(SingleResponsibilityPrinciple):

  • 每个模块应该专注于执行一个清晰且明确定义的功能,遵循单一职责原则,以降低模块的复杂性。

2、 高内聚性(HighCohesion):

  • 模块内的组件和类应该紧密相关,共同实现模块的目标。高内聚性有助于提高代码的可理解性和可维护性。

3、 低耦合性(LowCoupling):

  • 模块之间的依赖应该尽可能减少,以便修改一个模块时不会对其他模块造成影响。低耦合性有助于实现独立的模块。

4、 可重用性(Reusability):

  • 模块应该设计成可重用的组件,以便在项目的不同部分或未来的项目中能够复用。这通过提取通用功能到独立的模块(如 common 模块)来实现。

5、 清晰的界限和接口(ClearBoundariesandInterfaces):

  • 模块之间的界限和接口应该明确,确保模块之间的交互清晰可见。这有助于团队成员理解各个模块的职责。

6、 适度的模块化(ModerateModularity):

  • 将功能相近的组件放在同一模块中,但避免过度细化,以免引入不必要的复杂性。适度的模块化有助于提高项目的可维护性。
  • 如果你近期准备面试跳槽,建议在ddkk.com在线刷题,涵盖 一万+ 道 Java 面试题,几乎覆盖了所有主流技术面试题,还有市面上最全的技术五百套,精品系列教程,免费提供。

7、 分层架构(LayeredArchitecture):

  • 通过采用分层架构,如控制层、服务层、数据访问层等,有助于模块的划分和管理。这有助于代码的组织和理解。

8、 依赖倒置原则(DependencyInversionPrinciple):

  • 模块之间的依赖关系应该依赖于抽象而不是具体的实现。这有助于降低模块之间的耦合性。

9、 测试容易性(Testability):

  • 模块应该设计成易于测试的单元,以便进行单元测试、集成测试和端到端测试。

10、 适应未来扩展(AdaptabilityforFutureExtension):

  • 模块设计应该考虑未来的扩展性,以便在需求变化时能够轻松地添加新功能或模块。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

打开IDEA 开始创建项目

博主目前脑子里边有一个初步的架构。整体项目使用的是Maven管理的项目。

大概架构长这样:

项目目录结构总览(目前还不完整)

├─.idea
├─le-admin
│  └─src
│      ├─main        
│      │  ├─java     
│      │  │  └─com   
│      │  │      └─le
│      │  │         └─admin
│      │  └─resources
│      │      └─META-INF
│      └─test
│          └─java
│              └─com
│                  └─le
│                      └─test
├─le-business
│  └─src
│      └─main
│          └─java
│              └─com
│                  └─le
│                      └─business
├─le-common
│  └─src
│      └─main
│          └─java
│              └─com
│                  └─le
│                      └─common
├─le-core
│  └─src
│      └─main
│          └─java
│              └─com
│                  └─le
│                      └─core
├─le-gen-code
│  └─src
│      └─main
│          ├─java
│          │  └─com
│          │      └─le
│          │          └─code
│          │              ├─config
│          │              ├─controller
│          │              ├─domain
│          │              ├─mapper
│          │              ├─service
│          │              └─util
│          └─resources
│              ├─mapper
│              └─vm
└─le-tripartite
    └─src
        └─main
            └─java
                └─com
                    └─le
                       └─tripartite

core` 模块:

  • 应用概述: core 模块是整个项目的核心,专注于提供通用的配置和基础服务。
  • 主要功能: 可能包含 Spring Boot 的核心配置、通用的拦截器、全局异常处理等。
  • 角色定位: 不包含具体的业务逻辑,主要为其他模块提供基础设施。
  • pom文件 :↓
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0modelVersion>
    <parent>
        <groupId>com.xiaolegroupId>
        <artifactId>XiaoLeartifactId>
        <version>1.0.0version>
    parent>

    <groupId>com.legroupId>
    <artifactId>le-coreartifactId>

    <name>le-corename>

    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
        dependency>

        
        <dependency>
            <groupId>org.mybatis.spring.bootgroupId>
            <artifactId>mybatis-spring-boot-starterartifactId>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId >
        dependency>

        <dependency>
            <groupId>com.legroupId>
            <artifactId>le-businessartifactId>
        dependency>
    dependencies>
project>

common 模块:

  • 应用概述: common 模块用于存放通用的工具类和公共配置,为整个项目提供共享的基础。
  • 主要功能: 包含通用的工具方法、常量、公共配置等。
  • 角色定位: 不包含具体的业务逻辑,主要为其他模块提供通用功能。
  • pom文件 :↓
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0modelVersion>
    <parent>
        <groupId>com.xiaolegroupId>
        <artifactId>XiaoLeartifactId>
        <version>1.0.0version>
    parent>

    <groupId>com.legroupId>
    <artifactId>le-commonartifactId>

    <description>
        common
    description>

    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-securityartifactId>
        dependency>

        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-lang3artifactId>
        dependency>

    dependencies>
project>

genCode 模块:

  • 应用概述: genCode 模块可能是一个工具模块,用于生成代码或加速开发过程。
  • 主要功能: 可能包含代码生成器、模板引擎等,用于生成基础代码结构。
  • 角色定位: 可能是一个开发辅助工具,用于提高代码生成的效率。
  • pom文件 :↓
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0modelVersion>
    <parent>
        <groupId>com.xiaolegroupId>
        <artifactId>XiaoLeartifactId>
        <version>1.0.0version>
    parent>

    <groupId>com.legroupId>
    <artifactId>le-gen-codeartifactId>

    <name>le-gen-codename>

    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>

    <dependencies>

        <dependency>
            <groupId>com.legroupId>
            <artifactId>le-commonartifactId>
        dependency>

        <dependency>
            <groupId>org.apache.velocitygroupId>
            <artifactId>velocity-engine-coreartifactId>
        dependency>
    dependencies>
project>

business 模块:

  • 应用概述: business 模块是项目的业务核心,包含实际的业务逻辑和数据库访问。
  • 主要功能: 包含与业务相关的服务、领域逻辑、数据库访问(如 MyBatis、Redis)、业务配置等。
  • 角色定位: 为整个项目提供具体的业务功能,可能包括订单处理、用户管理等。
  • pom文件 :↓
<project




    
 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0modelVersion>
<parent>
    <groupId>com.xiaolegroupId>
    <artifactId>XiaoLeartifactId>
    <version>1.0.0version>
parent>

<groupId>com.legroupId>
<artifactId>le-businessartifactId>

<name>le-businessname>

<properties>
    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
properties>

<dependencies>

    <dependency>
        <groupId>com.legroupId>
        <artifactId>le-commonartifactId>
    dependency>

    <dependency>
        <groupId>com.legroupId>
        <artifactId>le-tripartiteartifactId>
    dependency>

dependencies>
project>

tripartite 模块:

应用概述: tripartite 模块可能是与第三方服务集成的模块,处理外部服务的调用和数据交互。

如果你近期准备面试跳槽,建议在ddkk.com在线刷题,涵盖 一万+ 道 Java 面试题,几乎覆盖了所有主流技术面试题,还有市面上最全的技术五百套,精品系列教程,免费提供。

主要功能: 包含与第三方服务通信的代码、集成配置等。

角色定位: 为整个项目提供与外部系统的连接,可能包括支付网关、第三方 API 等。

pom文件 :↓

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0modelVersion>
    <parent>
        <groupId>com.xiaolegroupId>
        <artifactId>XiaoLeartifactId>
        <version>1.0.0version>
    parent>

    <groupId>com.legroupId>
    <artifactId>le-tripartiteartifactId>

    <name>le-tripartitename>

    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>

    <dependencies>

        <dependency>
            <groupId>com.legroupId>
            <artifactId>le-commonartifactId>
        dependency>

    dependencies>
project>

admin 模块:

  • 应用概述: admin 模块可能是项目的管理界面,提供对系统的监控和管理功能。
  • 主要功能: 包含管理界面的业务逻辑、前端代码、可能的后台服务等。
  • 角色定位: 为管理员提供系统监控、用户管理等功能。
  • pom文件 :↓

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">


    <modelVersion>4.0.0modelVersion>
    <parent>
        <groupId>com.xiaolegroupId>
        <artifactId>XiaoLeartifactId>
        <version>1.0.0version>
    parent>

    <groupId>com.legroupId>
    <artifactId>le-adminartifactId>
    <packaging>jarpackaging>

    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>

    <dependencies>

        <dependency>
            <groupId>com.legroupId>
            <artifactId>le-gen-codeartifactId>
        dependency>

        <dependency>
            <groupId>com.legroupId>
            <artifactId>le-coreartifactId>
        dependency>

    dependencies>
project>

父pom


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0modelVersion>

    <groupId>com.xiaolegroupId>
    <artifactId






请到「今天看啥」查看全文