1 需求
1.1 需求描述
将ssh工程拆分为多个模块开发:
dao
service
web
![839806b3b4654d36251d45483d709f0f.png](https://i-blog.csdnimg.cn/blog_migrate/62b95450602393eac71efedfbe16273f.jpeg)
1.2 理解继承和聚合
通常继承和聚合同时使用。
何为继承?
继承是为了消除重复,如果将dao、service、web分开创建独立的工程则每个工程的pom.xml文件中的内容存在重复,比如:设置编译版本、锁定spring的版本的等,可以将这些重复的配置提取出来在父工程的pom.xml中定义。
何为聚合?
项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web三个工程最终会打一个独立的war运行。
2 案例实现
2.1 maven-parent父模块
创建父工程
![ab4360ca8835bb611291feb49ecc9fdc.png](https://i-blog.csdnimg.cn/blog_migrate/5eec06f10e3723292aaf46491990d54d.jpeg)
这里选择"跳过骨架选择"
![ecaa43d200a83f3735db233f70f0a6ba.png](https://i-blog.csdnimg.cn/blog_migrate/8dede9b8957066596f2760d78fc3f80b.jpeg)
定义坐标:
![69b8c31c9db8052ed65db5ce98892c00.png](https://i-blog.csdnimg.cn/blog_migrate/d69caf062d4ab1f84d4b69909549738e.jpeg)
定义pom.xml
在父工程的pom.xml中抽取一些重复的配置的,比如:锁定jar包的版本、设置编译版本等。
4.0.0cn.itcast.mavenmaven-parent0.0.1-SNAPSHOTpom父工程4.2.4.RELEASE5.0.7.Final2.3.24org.springframeworkspring-context${spring.version}org.springframeworkspring-aspects${spring.version}org.springframeworkspring-orm${spring.version}org.springframeworkspring-test${spring.version}org.springframeworkspring-web${spring.version}org.hibernatehibernate-core${hibernate.version}org.apache.strutsstruts2-core${struts.version}org.apache.strutsstruts2-spring-plugin${struts.version}org.apache.strutsstruts2-json-plugin${struts.version}maven-weborg.apache.maven.pluginsmaven-compiler-plugin1.71.7UTF-8
将父工程发布至仓库
父工程创建完成执行maven-install将父工程发布到仓库方便子工程继承:
![c1cb5502dff574ad65a390fab71d5c85.png](https://i-blog.csdnimg.cn/blog_migrate/8e9a61a94e70cfc9e74bf10470e09904.jpeg)
2. 2 maven-dao子模块
创建dao子模块
选择maven模块:
![4dd2d227a2106d83044ff4d319728ed3.png](https://i-blog.csdnimg.cn/blog_migrate/48b2f578401c5f57dfa5e3fc7d5734c8.jpeg)
这里指定模块名称,选择"跳过骨架选择":
![c237d71e5757cb65ac91f1e05212106d.png](https://i-blog.csdnimg.cn/blog_migrate/5143ea54cdde510f979245d056e7af50.jpeg)
定义pom.xml
dao模块的pom.xml文件中需要继承父模块,添加持久层需要的依赖坐标:
4.0.0cn.itcast.mavenmaven-parent0.0.1-SNAPSHOTmaven-daojarorg.hibernatehibernate-coreorg.springframeworkspring-contextorg.springframeworkspring-aspectsorg.springframeworkspring-ormorg.springframeworkspring-testorg.springframeworkspring-webmysqlmysql-connector-java5.1.6runtimec3p0c3p00.9.1.2org.slf4jslf4j-log4j121.7.2junitjunit4.9test
dao接口
将maven-web工程中的dao接口及domain类拷贝到src/main/java中:
![38355b31639881ac7c538843e37c7ecb.png](https://i-blog.csdnimg.cn/blog_migrate/d7a2d6f6b4f54e7238531975dd29c6ee.jpeg)
配置文件
拷贝maven-web工程中如下配置文件到dao工程:
![50661a4256421c1533348dad0c8d2d16.png](https://i-blog.csdnimg.cn/blog_migrate/da425a28e6bcf1b5a61373f3bcf7179b.jpeg)
注意:
将applicationContext.xml拆分出一个applicationContext-dao.xml,此文件中只配置dao
applicationContext.xml的内容如下:
单元测试
@ContextConfiguration(locations = { "classpath:applicationContext.xml