maven多模块构建项目(常见的springmvc项目结构)

版权声明:博主原创,未经允许不得转载。 https://blog.csdn.net/qq_31748587/article/details/84849520

正经学徒,佛系记录,不搞事情

该功能一般使用于较大的项目,对项目进行业务拆分或者代码分层,这里以代码分层+IDEA为例,构建常用的springmvc项目

最终项目结构:(这里仅分三层,基于项目的规模和复用程度,可以追加mn_bpo层,mn_api层,mn_domin层等)

个人建议:由于每个层级所负责的功能不同,对应的实体类定位也不一样,甚至大项目每个层级都是有专门的开发人员负责,因此推荐避免创建domin层,而是在每个层级之间建立依赖关系,具体的实体类也以不同的后缀区分,调用时,对实体类进行拷贝,如:

页面)与(controller层)之间交互的参数命名为:XxxVO

controller层、dao层)与(bs层)之间交互的参数命名为:XxxDTO

dao层)与(数据库)之间交互的参数命名为:Xxx (即对应数据库表的实体类)

对于特殊情况的参数,如多表关联查询参数可使用DTO统称

第一步:创建一个空项目Project(eclipse不需要这一步,这一步类似于eclipse的分组)

第二步:创建一个空的maven父工程(module)

由于这里想使用springboot来启动项目,因此该父工程创建为springboot项目

勾选web起步依赖

 

最后删除无用文件,只保留pom.xml和idea的.iml文件,设置pom.xml文件打包方式为pom

第三步:创建一个mn_controller子工程

这里要将controller层设置为项目启动层,因此也创建为springboot项目

 选中web起步依赖

 

 修改项目路径在mn_parent目录下

删除无用文件,最终目录

由于mn_parent项目是父工程,所有子项目将继承父工程,因此这里将mn_controllerpom.xml文件就不需要mn_parent项目中重复出现过的依赖

最终,mn_controllerpom.xml文件如下:

<?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>
	<parent>
		<groupId>com.mn</groupId>
		<artifactId>mn_parent</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<groupId>com.mn</groupId>
	<artifactId>mn_controller</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>mn_controller</name>
	<description>Demo project for Spring Boot</description>
	<dependencies>
		
	</dependencies>
</project>

父工程的pom.xml文件如下:(记得添加module)

<?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>
	<modules>
		<module>mn_controller</module>
	</modules>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.mn</groupId>
	<artifactId>mn_parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>mn_parent</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

第四步:创建一个mn_bs子工程

其余的子项目只需要创建普通的maven工程即可

注意修改工程位置:

此时mn_parentpom.xml会自动追加子项目

<modules>
    <module>mn_controller</module>
    <module>mn_bs</module>
</modules>

第五步:同第四步,创建一个mn_dao

实际项目数据库实体类、mapper.xml文件等存放在这个项目中

第六步:为每个子项目创建依赖关系

mn_controller项目的pom.xml文件添加mn_bs依赖:

<dependencies>
	<!--添加mn_bs依赖-->
	<dependency>
		<groupId>com.mn</groupId>
		<artifactId>mn_bs</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>
</dependencies>

mn_bs项目的pom.xml文件添加mn_dao依赖:

<dependencies>
	<!--添加mn_dao依赖-->
	<dependency>
		<groupId>com.mn</groupId>
		<artifactId>mn_dao</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>
</dependencies>

这里需要注意的地方是,项目之间的依赖关系不能构成循环依赖,例如:本项目中mn_controller依赖了mn_bsmn_bs依赖了mn_dao,这样是合理的,不会报错,如果mn_dao又依赖了mn_controller则会形成循环依赖,项目运行报错

第七步:验证

mn_bs项目添加代码

提供一个简单的返回UserDTO对象

@Override
public UserDTO get() {
    UserDTO user = new UserDTO("1","man",20);
    return user;
}

mn_controller项目添加代码,调用mn_bs项目返回UserDTO对象

@RestController
public class UserController {
    @Autowired
    private UserBS userBS;
    @GetMapping("get")
    public UserDTO get(){
        return userBS.get();
    }
}

访问:

多模块搭建成功

项目地址:

https://pan.baidu.com/s/1OOoHdgF-MdBjFHl8gi5MMw 提取码: jjc8

展开阅读全文

没有更多推荐了,返回首页