正经学徒,佛系记录,不搞事情
该功能一般使用于较大的项目,对项目进行业务拆分或者代码分层,这里以代码分层+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_controller的pom.xml文件就不需要mn_parent项目中重复出现过的依赖
最终,mn_controller的pom.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_parent的pom.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_bs,mn_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