正经学徒,佛系记录,不搞事情
该功能一般使用于较大的项目,对项目进行业务拆分或者代码分层,这里以代码分层+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文件如下:
4.0.0
com.mn
mn_parent
0.0.1-SNAPSHOT
com.mn
mn_controller
0.0.1-SNAPSHOT
jar
mn_controller
Demo project for Spring Boot
父工程的pom.xml文件如下:(记得添加module)
4.0.0
mn_controller
org.springframework.boot
spring-boot-starter-parent
2.0.7.RELEASE
com.mn
mn_parent
0.0.1-SNAPSHOT
pom
mn_parent
Demo project for Spring Boot
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
第四步:创建一个mn_bs子工程
其余的子项目只需要创建普通的maven工程即可
注意修改工程位置:
此时mn_parent的pom.xml会自动追加子项目
mn_controller
mn_bs
第五步:同第四步,创建一个mn_dao
实际项目数据库实体类、mapper.xml文件等存放在这个项目中
第六步:为每个子项目创建依赖关系
mn_controller项目的pom.xml文件添加mn_bs依赖:
com.mn
mn_bs
1.0-SNAPSHOT
mn_bs项目的pom.xml文件添加mn_dao依赖:
com.mn
mn_dao
1.0-SNAPSHOT
这里需要注意的地方是,项目之间的依赖关系不能构成循环依赖,例如:本项目中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