项目比较庞大时,需要考虑对项目进行拆分,分模块构建项目。目前有两种常见的拆分思路:1、按业务模块,2、按层
1、按层划分:
以上一个项目为例:可以分为dao
层,service
层,web
层,所建工程如下图:
项目关系图
它们之间的关系是依赖和继承
1.1、继承
子项目继承父项目可以继承父项目中的pom.xml
文件中的一些内容
如:properties
、dependencyManagement
、dependencies
<groupId>com.sj</groupId>
<artifactId>Parent_39</artifactId>
<version>1.0.0</version>
<!-- 父项目中的打包方式必须是pom-->
<packaging>pom</packaging>
子项目继承父项目的标签
<parent>
<artifactId>Parent_39</artifactId>
<groupId>com.sj</groupId>
<version>1.0.0</version>
</parent>
1.2、聚合
通过父项目pom.xml
文件中的modules
标签聚合多个项目,对多个项目进行统一构建管理,通常会在父项目中聚合它的子项目
<!-- 聚合-->
<modules>
<module>dao</module>
<module>service</module>
<module>web</module>
</modules>
1.3、依赖
一个项目可以通过dependency
依赖另一个项目
一个项目也可以直接拥有另一个项目中的classpath
中的内容
例如service
项目依赖Dao
项目,在service
项目中的pom.xml
文件的dependency
内容如下
<artifactId>service</artifactId>
<dependencies>
<dependency>
<groupId>com.sj</groupId>
<artifactId>dao</artifactId>
<version>1.0.0</version>
</dependency>
<dependencies>
2、各个模块之间的内容
2.1、Dao
模块内容
承载着与数据库的链接工作,为上层提供基础服务
Dao模块
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
</dependencies>
2.2、service
模块内容
service
模块封装了Dao
层的内容,提供了数据库的事务管理,以及面向切片编程的思想。
<dependencies>
<dependency>
<groupId>com.sj</groupId>
<artifactId>dao</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.6</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.6</version>
</dependency>
</dependencies>
2.3、web
模块
web
模块依赖service
模块,定义了controller
类型,实现了MVC
模型,面向具体的应用解决实际问题。
<dependencies>
<dependency>
<groupId>com.sj</groupId>
<artifactId>service</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework </groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
</dependencies>
网友评论