美文网首页
[java]50、项目拆分模块

[java]50、项目拆分模块

作者: 史记_d5da | 来源:发表于2022-08-17 21:38 被阅读0次

项目比较庞大时,需要考虑对项目进行拆分,分模块构建项目。目前有两种常见的拆分思路:1、按业务模块,2、按层

1、按层划分:

以上一个项目为例:可以分为dao层,service层,web层,所建工程如下图:

工程结构体
项目关系图
它们之间的关系是依赖和继承
1.1、继承

子项目继承父项目可以继承父项目中的pom.xml文件中的一些内容
如:propertiesdependencyManagementdependencies

    <groupId>com.sj</groupId>
    <artifactId>Parent_39</artifactId>
    <version>1.0.0</version>
<!--    父项目中的打包方式必须是pom-->
    <packaging>pom</packaging>

子项目继承父项目的标签

    <parent>
        <artifactId>Parent_39</artifactId>
        <groupId>com.sj</groupId>
        <version>1.0.0</version>
    </parent>
1.2、聚合

通过父项目pom.xml文件中的modules标签聚合多个项目,对多个项目进行统一构建管理,通常会在父项目中聚合它的子项目

<!--    聚合-->
    <modules>
        <module>dao</module>
        <module>service</module>
        <module>web</module>
    </modules>
1.3、依赖

一个项目可以通过dependency依赖另一个项目
一个项目也可以直接拥有另一个项目中的classpath中的内容
例如service项目依赖Dao项目,在service项目中的pom.xml文件的dependency内容如下

<artifactId>service</artifactId>
<dependencies>
    <dependency>
        <groupId>com.sj</groupId>
        <artifactId>dao</artifactId>
        <version>1.0.0</version>
    </dependency>
<dependencies>

2、各个模块之间的内容

2.1、Dao模块内容

承载着与数据库的链接工作,为上层提供基础服务


Dao模块
<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.22</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.5</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.3</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
2.2、service模块内容

service模块封装了Dao层的内容,提供了数据库的事务管理,以及面向切片编程的思想。

service模块
<dependencies>
        <dependency>
            <groupId>com.sj</groupId>
            <artifactId>dao</artifactId>
            <version>1.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.6</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.9.6</version>
        </dependency>
    </dependencies>
2.3、web模块

web模块依赖service模块,定义了controller类型,实现了MVC模型,面向具体的应用解决实际问题。

web模块
<dependencies>
        <dependency>
            <groupId>com.sj</groupId>
            <artifactId>service</artifactId>
            <version>1.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework </groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.3</version>
        </dependency>
    </dependencies>

相关文章

  • [java]50、项目拆分模块

    项目比较庞大时,需要考虑对项目进行拆分,分模块构建项目。目前有两种常见的拆分思路:1、按业务模块,2、按层 1、按...

  • 在终端营销活动中:如何对整体项目进行有效拆分?

    项目拆分就是把整体项目拆分成几个模块,这几个模块彼此独立,又相互联系。 拆分项目的目的,是为了我们能更好的去管理推...

  • 对SpringCloud微服务架构的理解

    微服务 微服务 将all in one的项目拆分,可以按业务拆分成独立的模块等,降低模块与模块之间的耦合性,每个微...

  • 某装修平台项目技术总结

    一、非技术层面 1. 项目----拆分----> 模块 项目开始时,应把项目分解为多个模块.按照模块间耦合度排序....

  • NO.4 --- IDEA 创建 Java 模块

    笔记内容:一、IDEA 创建 Java 项目模块。二、删除 Java 项目模块。 一、IDEA 创建 Java 项...

  • 2017爱阅帮项目总结

    项目亮点优点大的: 通过私有库将网络模块、Api模块、Utils拆分,做到多项目公用(离散Api->Base处理-...

  • Maven构建多模块工程

    构建多模块Maven工程 基础知识铺垫  Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代...

  • iOS - 组件化

    一、概述 1.概念 组件化就是将项目拆分为多个模块(组件),解除模块间的耦合,通过主项目把模块(组件)结合起来。 ...

  • Flask项目拆分celery模块

    在flask项目中使用celery作异步任务处理时,由于异步的任务比较多,就想着把这些任务独立出一个模块,在视图函...

  • 无标题文章

    项目拆分 Cocoapods 多模块构建 framework构建 OC swift混编 http://www.ji...

网友评论

      本文标题:[java]50、项目拆分模块

      本文链接:https://www.haomeiwen.com/subject/owmlgrtx.html