美文网首页
[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、项目拆分模块

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