记录最近在解决spring boot单模块和多模块在开发和打包的疑惑及理解

  • 最初接触学习java时都是的单模块的形式,对项目名、包名、模块名这些之间的关系的理解非常模糊
  • 最近想整理maven项目开发时和打包后的目录结构的变化,从中发现了多模块是如何打包的
  • 学习使用的是若依框架的不分离版本

  • 在单模块开发时,目录结构一般都是:
xxx-xxx	//模块
	src
	  ∟ main
	  	  ∟ java
	  	  	  ∟ com
	  	  	  	  ∟ xxx
	  	  	  	  	  ∟ xxx
	  	  	  	  	  	  ∟ controller	//控制层(接收请求,匹配处理方法,返回结果)
	  	  	  	  	  	  ∟ service		//服务层接口(处理具体业务逻辑的接口)
	  	  	  	  	  	  	  ∟ impl	//服务层实现((处理具体业务逻辑的接口实现))
	  	  	  	  	  	  ∟ mapper		//数据访问层,与数据库交互,为service层提供数据交互的接口
	  	  	  	  	  	  ∟ domain		//实体类
	  	  	  	  	  	  ∟ utils		//工具类
	  	  	  	  	  	  ∟ *Application.java	//项目入口启动类
	  	  ∟ resources
	  	  	  ∟ static		// 静态资源(html、css、js、图片等,打包好的前端项目)
	  	  	  ∟ templates	//视图模板(spring mvc中的概念,jsp、thymeleaf等)
	  	  	  ∟ mapper		//数据访问层对应的XML配置
	  	  	  	  ∟ *mapper.xml
	  	  	  ∟ application.yml			//公共配置
	          ∟ application-dev.yml		//开发环境配置
	          ∟ application-prod.yml	//生产环境配置
	          ∟ banner.txt				//spring boot启动时打印该文件
	∟ pom.xml		//该模块的POM文件
  • 单模块项目只有一个pom.xml文件在模块根目录下

  • 在多模块情况下,一般会有一个包含启动类的主模块,配置文件也在这个模块下,其他子模块不需要配置文件
  • 打包时,会把其他子模块也单独打包成一个jar包,然后将其一并放到主模块的依赖目录下
  • 换个角度就是,其实一直在为主模块编写依赖模块
xxx	//项目包
	xxx-xxx	//主模块
		src
		  ∟ main
		  	  ∟ java
		  	  	  ∟ com
		  	  	  	  ∟ xxx
		  	  	  	  	  ∟ xxx
		  	  	  	  	  	  ∟ *Application.java	//项目入口启动类
		  	  ∟ resources
		  	  	  ∟ application.yml			//公共配置
		          ∟ application-dev.yml		//开发环境配置
		          ∟ application-prod.yml	//生产环境配置
		          ∟ banner.txt				//spring boot启动时打印该文件
		∟ pom.xml		//该模块的POM文件
		
	xxx-xxx	//子模块
		src
		  ∟ main
		  	  ∟ java
		  	  	  ∟ com
		  	  	  	  ∟ xxx
		  	  	  	  	  ∟ xxx
		  	  	  	  	  	  ∟ controller	//控制层(接收请求,匹配处理方法,返回结果)
		  	  	  	  	  	  ∟ service		//服务层接口(处理具体业务逻辑的接口)
		  	  	  	  	  	  	  ∟ impl	//服务层实现((处理具体业务逻辑的接口实现))
		  	  	  	  	  	  ∟ mapper		//数据访问层,与数据库交互,为service层提供数据交互的接口
		  	  	  	  	  	  ∟ domain		//实体类
		  	  	  	  	  	  ∟ utils		//工具类
		  	  ∟ resources
		  	  	  ∟ static		// 静态资源(html、css、js、图片等,打包好的前端项目)
		  	  	  ∟ templates	//视图模板(spring mvc中的概念,jsp、thymeleaf等)
		  	  	  ∟ mapper		//数据访问层对应的XML配置
		  	  	  	  ∟ *mapper.xml
		∟ pom.xml		//该模块的POM文件
	∟ pom.xml		//整个项目的POM文件
  • 至于多模块的划分依据,可以是按照软件的功能划分,也可以按照代码的作用划分,具体的划分方式还不太了解,在目前接触的项目看来,主模块并不处理业务

以上是对多模块结构的一些理解,有些地方不够深入
参考:SpringBoot项目的目录结构及名规范

新手上路,如有错误欢迎指正