Maven多模块项目搭建+整合SSM框架(idea版)
理解继承和聚合
通常继承和聚合同时使用
何为继承?
继承是为了消除重复,如果将 dao、service、web 分开创建独立工程则每个工程pom.xml文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本的等,可以将这些重复的配置提取出来在父工程的 pom.xml 中定义。
何为聚合?
项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web 三个工程最终会打一个独立的 war 运行。
需求和描述
我们一般将SSM工程拆分为多个模块来开发,比如dao,service,controller,utils和domain,然后利用其自建的依赖关系相互调用,然后这些项目会打包成统一的一个war包,最终能够成为一个完成完整的项目,每层负责每个人的任务,大家再通过版本控制工具svn或者git(后期会学到)达到一个协同开发的效果,后期会有很多这样的项目,后面的博客会介绍到
准备工作
1.建立相关的数据库和数据表,这里以oracle的单表操演示
2.建立父子工程的目录结构,我们处理这种的业务逻辑,一般都是将子工程放在工程中去,这里我用的是idea版的项目,这里我建的是父工程为一个project,子工程全部是model,我下面给大家展示一下我的目标结构
3.导入相关的jar包,因为这里建立的是聚合项目,每一层所需要的jar都是不一样的,比如dao层用到与数据库交互的jar包还有mybatis本身需要的jar和service需要spring对事务处理的jar包等,为了方便将其放到父工程的空间中,这里每一个子工程都能够调用,因为我建的是maven工程,下面我给大家展示一下我的相关jar包坐标
4.一般项目的配置文件可以根据自己的需求每一层放到每一层的业务里面,这样一般是业务范围比较大的时候,我这里做的是demo,故我把所有的配置文件都放在了controller里面,这里面防止了所有的配置文件
项目具体的流程
1.父工程的pom.xml文件,主要是对于子工程jar包的管理,版本控制,以及判断其子工程的具体情况
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.ujiuye</groupId>
<artifactId>ssm_ujiuye</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<properties>
<spring.version>5.0.2.RELEASE</spring.version>
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<oracle.version>11.2.0.1.0</oracle.version>
<mybatis.version>3.4.5</mybatis.version>
<spring.security.version>5.0.1.RELEASE</spring.security.version>
</properties>
<dependencies> <!-- spring -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</