• Maven——分模块开发与设计(重点)


    目录

    一、模块拆分

     1.1 模块拆分思想

      1.2  pojo模块拆分

     1.3  dao模块拆分

     1.4 service模块拆分

     1.5 controller模块拆分

    二、 聚合——模块聚合

    三、继承——模块继承


    一、模块拆分

     1.1 模块拆分思想

    左侧:我们从前的架构,一个人独立做的所有工作文件都在src目录下

    右侧:以后我们的工程都会按照模块化开发,通过多模块的合作,来完成我们的项目

      1.2  pojo模块拆分

    按照下面的图示进行操作,真的非常简单

    注意这个地方的parent我们先设置一个None,这个地方我们后面会说

    如果进到这个页面发现下面的包没有颜色,不要着急,点击OK即可,然后再进入这个页面就行了

     注意看 我下面这个包就留了一个java包,其他全部删掉(键盘delete)

    如下图所示,我们就可以在下面这个包里面写关于pojo的代码了,各种实体类

     

     

     1.3  dao模块拆分

    和上面一个样子,依然是创建一个新的模块,在这个模块完成对数据库的访问和操作

    接下来我们就可以编写有关dao层的代码 ,如果有资源的需要的娿,可以再保存一个resources包

     

    因为我们这是里dao层,一般会在pom文件中应该添加相应的坐标,用什么添加什么就好了

    除此之外,我们这个地方还会爆红!

     说明:因为我们的dao层一般会用到实体类,如若是下图,则还需要一个User实体类,但是User实体类并不在我们下面这个项目中,而是在ssm_pojo层

     那这该怎么办呢?

          找到ssm_pojo的pom文件,将红色箭头指向的三行全部复制

    然后在ssm_dao中以资源的形式导入,非常的巧妙

      

         但是!!!在上面这个操作之前,我们应该先 把ssm_pojo下载到仓库中,否则是访问不到的,因为maven是从仓库中找资源

          其他的资源我们可以下载,但是ssm_pojo没有办法下载,因为这是我们自己写的(自定义),所以在仓库中找不到也下载不了,只能我们手动install到本地仓库

          简洁的说:我们引入的依赖要保证仓库中有

    此时对ssm_dao编译,如果能通过,便能使用

     1.4 service模块拆分

    创建模块

        这个地方的包想删除的可以删除一下

    在此之前,我们应该把ssm_dao加载到我们的仓库当中(install,和上面一模一样)

    导入其他模块的依赖(导入dao模块,不用导入pojo,在dao中已经导入了,这个地方要注意一下,直接依赖与间接依赖的问题)

     1.5 controller模块拆分

    创建maven的ssm_controller模块,在pom.xml文件中引用我们所需要的模块

    在导入下面这个坐标之前,先将ssm_service下载到本地库

    1.6 总结

    • 模块中仅包含当前 模块对应的功能类与配置文件
    • Spring核心配置根据模块功能不同进行独立制作
    • 当前模块所依赖的模块通过导入坐标的形式加入当前模块后才可以使用
    • web.xml需要加载所有spring核心配置类

    二、 聚合——模块聚合

    拆完之后由一个变成多个就会引发很多的问题

        我们把下图的四个文件查分后都会放到我们的本地仓库中,此时就会出现问题

         比如说,我们ssm_dao模块修改了,但是没有通知其他模块,这显然会造成其他模块的错误

         为了避免这种错误,所以我们希望下面的四个项目能够同时进行,我们将所有的功能模块都交给一个大的模块管理,完成所谓的聚合

         比如,这个大模块安装,下面的四个也跟着安装,大模块编译,下面的四个也跟着编译

        

    这个模块不是为了完成具体的功能用的,仅仅是为了完成管理用的

     只留下一个pom.xml文件即可

    注意:参与聚合操作模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关

    如果不写打包方式,就默认打包成jar包的方式

        jar
        <packaging>pompackaging>  //专门用来做聚合工程用的

    controller层是一个war包,ssm层是一个pom包,其他的默认就可

    三、继承——模块继承

       就我实习的经历而言,公司大多数项目是这种继承的形式的,聚合的还是比较少的。

        也或许有其他的,但是我看不懂那个结构。

           模块拆分之后,每个模块都会用到一定的依赖,但是对于同一个依赖有不同的版本,不同的版本可能会存在不兼容的问题,所以我们希望一个模块出来统一管理我们的依赖版本,避免同一个依赖但是版本不兼容的问题

    作用:子工程沿用父工程中的配置

     

        下面里面的内容是我们在上面做聚合工程中遗留下来的,我们为了方便,聚合和继承都在同一个项目中演示,学习时一定不要混了

         将所有的依赖都放到ssm的pom.xml文件夹下

    在其他模块中定义该工程的父工程(改造所有的子模块)

    如果ssm配置文件中有有关插件的配置,可采取下面这种方式

    父工程管理,子工程统一引用,子工程引用的时候,将所有的版本号删除,听从父工程的

     以后整体改造的时候,直接在父工程中换版本就可以,简单方便效率高 

    下图中没有version标签

    在实际开发中,我们一般是下图所示:

    父工程

    子工程,其一定要指定对应的父工程 

     

    四、继承与聚合的区别

      做继承和做聚合是完全可以做到两个工程里面去的,上面的例子只是演示

    聚合是在父工程pom文件操作引入子工程

    继承是在子工程pom文件操作引入父工程

    4.1 作用

    聚合用于快速构建项目

    继承用于快速配置

    4.2 相同点

     聚合和继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件

     聚合与继承均属于设计型模块,并无实际模块的内容

    4.3 不同点

    聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些

    继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

  • 相关阅读:
    Mqtt 客户端 java API 教程
    北斗导航 | 基于奇偶矢量法的RAIM之SSE探索(附奇偶矢量法源代码)
    COO、CSR、adj_coo、adj_csr详解:稀疏矩阵与稀疏邻接矩阵的存储格式及转换
    C# 异步编程,有时候我们需要拿到异步任务计算体完成计算的数据,请使用task.AsyncState去获取。
    鼓楼夜市管理wpf+sqlserver
    mysql将id重新修改为递增
    ubuntu无法使用man
    18.C++中模板参数类型推断与引用
    python中的NumPy和Pandas往往都是同时使用,NumPy和Pandas的在数据分析中的联合使用
    解决docker 容器状态 Exited (1)问题
  • 原文地址:https://blog.csdn.net/weixin_51351637/article/details/128052572