maven工程拆分与聚合的思想 ,把web工程修改成maven拆分与聚合的形式的具体步骤

拆分和聚合的代码demo可点击链接下载:demo代码

一、 maven工程拆分与聚合的思想

在这里插入图片描述

工程和 模块的区别

工程不等于完整的项目,模块也不等于完整的项目,一个完整的项目看的是代码,代码完整就可以说是一个完整的项目

和此项目是工程和模块没有关系

区别:

工程天生只能使用自己内部资源,工程天生是独立的.后天可以和其他工程或模块建立关联关系

模块天生不是独立的,模块天生是属于父工程的,模块一旦创建,所有父工程资源都可以使用.

联系:

父子工程之间,子模块天生继承父工程,可以使用父工程所有资源.
子模块之间天生是没有任何关系的.

父子工程之间不用建立关系,继承关系是先天的,不需要手动建立。

平级之间的引用叫依赖,依赖是后天建立的,不是天生的。

在这里插入图片描述

直接依赖和传递依赖

直接依赖:dao直接依赖于parent,作用域是compile
传递依赖:dao和junit是传递依赖,作用域是test

在这里插入图片描述

二、使用maven做构建ssm框架(传统聚合的项目)

maven传统的web工程做一个数据查询操作

(1)SSM框架下的dao层代码编写

a. 先创建数据库对应的实体类,属性名和数据库的字段名要相对应

b. 创建操作数据库的接口,并且定义抽象方法publicItemsfindById(Integerid);

因为使用ssm框架,接口对应的是mybatis的持久层框架,则接口不用写实现类,让mybatis直接生成接口的代理对象即可

c.在resources文件夹下创建和src目录结构相同的目录,并且创建接口的配置文件(XML),用于操作数据库——操作数据库定义一个mapper进行操作,如下:

在这里插入图片描述
d. 创建spring的配置文件,希望spring整合mybatis框架,则需要配置连接池连接数据库,配置生成sqlsession工厂,扫描包中接口的路径

在这里插入图片描述
e. 编写测试类,测试是否配置成功
在这里插入图片描述

(2)SSM框架下的service层代码编写

公司实际开发中:自己写的类尽量使用注解,框架中的类使用配置文件、
  1. 创建service层的接口 (方法名此时和dao层的操作的方法名一致)
    在这里插入图片描述

  2. 为service层的接口添加实现类,并且把dao的操作对象进行注入,因为itemsdao是自己写的类,所以加上注解的方式交由spring的aop进行注入(原本没有值的,加上一个值)
    在这里插入图片描述

  3. 编写service层的配置文件,实现业务层处理业务逻辑和处理事务的功能配置,
    ①配置组件的扫描,(aop面向切面编程,切面就是切入点和通知的组合)
    ②配置事务管理器(想要控制事务,就要用到connection,用到connection就要用到连接池),
    ③配置事务的通知,
    ④配置切面(并且需要把切入点和通知类进行整合,变成切面)
    在这里插入图片描述

  4. 编写测试

在这里插入图片描述

(3)SSM框架下的web层代码编写

  1. 创建web层的控制类,需要在类上加上 @Controller @RequestMapping("/items") 即把对象交给容器管理并且加上全局路径,
    在这里插入图片描述

  2. 由于applicationContext.xml文件是用来配置spring框架的,而web层采用的是springmvc框架,所以建立一个springmvc.xml文件用于配置web层,并把springmvc.xml的配置文件导入我们需要的context、aop、mvc、tx等约束
    ① 配置组件扫描
    ②开启springmvc的注解支持(处理器映射器、处理器适配器)
    ③配置视图解析器
    ④释放静态资源
    在这里插入图片描述

  3. 在/WEN-INF/pages/目录下创建要跳转的视图文件 itemDetail.jsp
    在这里插入图片描述

  4. 为了把所有配置文件的资源一启动就交给servlet容器中,则需要配置web.xml
    ① 配置编码过滤器
    ② 配置spring文件扫描——配置spring核心监听器
    ③ springmvc的核心servlet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、把传统聚合的项目进行拆分的具体步骤

之前的项目把dao、service、web层都放在了一个项目中,现在进行拆分成模块并借助依赖的方式进行导入。
在这里插入图片描述

理解继承和聚合

通常继承和聚合同时使用。

 何为继承?

继承是为了消除重复,如果将 dao、 service、 web 分开创建独立的工程则每个工程的 pom.xml
文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本的等,可以将这些重复的
配置提取出来在父工程的 pom.xml 中定义。

 何为聚合?

项目开发通常是分组分模块开发, 每个模块开发完成要运行整个工程需要将每个模块聚合在
一起运行,比如: dao、 service、 web 三个工程最终会打一个独立的 war 运行。

  • 拆分之前的目录结构:
    在这里插入图片描述

  • 拆分之后的项目目录结构:
    在这里插入图片描述
    每个模块都需要 spring 或者 junit 的 jar,况且最终 package 打完包最后生成的项目中的jar 就是各个模块依赖的整合,所以我们可以把项目中所需的依赖都可以放到父工程中,模块中只留模块和模块之间的依赖。

(1)dao层模块:

在这里插入图片描述
在这里插入图片描述
dao中对spring的配置也只配置dao层的,不加入service的配置

(2)service层模块:

在这里插入图片描述
在这里插入图片描述

(3) Web 层模块:

在这里插入图片描述
在这里插入图片描述
web层包含web层的页面资源等,并且导入对dao和service层的配置文件的扫描

其中,web层的web.xml文件是对web层的配置文件,里面可以包含配置spring核心监听器和springmvc的核心servlet等

posted @ 2020-12-11 16:26  your_棒棒糖  阅读(96)  评论(0)    收藏  举报