记录最近在解决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项目的目录结构及名规范
新手上路,如有错误欢迎指正