1 需求
1.1 需求描述
将ssh工程拆分为多个模块开发:
dao
service
web
1.2 理解继承和聚合
通常继承和聚合同时使用。
何为继承?
继承是为了消除重复,如果将dao、service、web分开创建独立的工程则每个工程的pom.xml文件中的内容存在重复,比如:设置编译版本、锁定spring的版本的等,可以将这些重复的配置提取出来在父工程的pom.xml中定义。
何为聚合?
项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web三个工程最终会打一个独立的war运行。
2 案例实现
2.1 maven-parent父模块
创建父工程
这里选择"跳过骨架选择"
定义坐标:
定义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将父工程发布到仓库方便子工程继承:
2. 2 maven-dao子模块
创建dao子模块
选择maven模块:
这里指定模块名称,选择"跳过骨架选择":
定义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中:
配置文件
拷贝maven-web工程中如下配置文件到dao工程:
注意:
将applicationContext.xml拆分出一个applicationContext-dao.xml,此文件中只配置dao
applicationContext.xml的内容如下:
单元测试
@ContextConfiguration(locations = { "classpath:applicationContext.xml