Spring Boot 项目如何按模块进行拆分?

在了解SpringBoot项目拆分之前首先我们需要了解微服务架构
什么是微服务?单个轻量级服务一般为一个单独微服务,微服务讲究的是 专注某个功能的实现,比如登录系统只专注于用户登录方面功能的实现,讲究的是职责单一,开箱即用,可以独立运行 。微服务架构系统是一个分布式的系统,按照业务进行划分服务单元模块,解决单个系统的不足,满足越来越复杂的业务需求 。
马丁福勒(Martin Fowler):就目前而言,对于微服务业界并没有一个统一的、标准的定义 。但通常而言,微服务架构是一种架构模式或者说是架构风格,它提倡将单一应用程序划分成一组小的服务 。每个服务运行在其独立的自己的进程中服务之间相互配合、相互协调,为用户提供最终价值 。服务之间采用轻量级通信 。每个服务都围绕具体业务进行构建,并能够独立部署到生产环境等 。另外应尽量避免统一的、集中的服务管理机制 。
通俗的来讲:
微服务就是一个独立的职责单一的服务应用程序 。在 intellij idea 工具里面就是用maven开发的一个个独立的module,具体就是使用springboot 开发的一个小的模块,处理单一专业的业务逻辑,一个模块只做一个事情 。
微服务强调的是服务大小,关注的是某一个点,具体解决某一个问题/落地对应的一个服务应用,可以看做是idea 里面一个 module 。
比如你去医院:你的牙齿不舒服,那么你就去牙科 。你的头疼,那么你就去脑科 。一个个的科室,就是一个微服务,一个功能就是一个服务 。
微服务的优缺点是什么?优点: 松耦合,聚焦单一业务功能,无关开发语言,团队规模降低 。在开发中,不需要了解多有业务,只专注于当前功能,便利集中,功能小而精 。微服务一个功能受损,对其他功能影响并不是太大,可以快速定位问题 。微服务只专注于当前业务逻辑代码,不会和 html、css 或其他界面进行混合 。可以灵活搭配技术,独立性比较舒服 。
缺点: 随着服务数量增加,管理复杂,部署复杂,服务器需要增多,服务通信和调用压力增大,运维工程师压力增大,人力资源增多,系统依赖增强,数据一致性,性能监控
什么是微服务架构?微服务架构 就是 对微服务进行管理整合应用的 。微服务架构 依赖于 微服务,是在微服务基础之上的 。
例如:上面已经列举了什么是微服务 。在医院里,每一个科室都是一个独立的微服务,那么 这个医院 就是 一个大型的微服务架构,就类似 院长 可以 对下面的 科室进行管理 。微服务架构主要就是这种功能 。
创建一个父项目项目依赖咱们可以先不添加,项目创建完之后统一加入就好了

Spring Boot 项目如何按模块进行拆分?

文章插图
 

Spring Boot 项目如何按模块进行拆分?

文章插图
 
父项目pom文件然后我们需要注意的是需要更改父项目的pom文件
Spring Boot 项目如何按模块进行拆分?

文章插图
 
在父级项目中的pom.xml文件使用的packaging配置一定为pom 。父级的pom文件只作项目的子模块的整合,在maven install时不会生成jar/war压缩包 。
然后将打包插件更改为 maven-compiler-plugin
<build><plugins><plugin><groupId>org.Apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>${JAVA.version}</source><target>${java.version}</target></configuration></plugin><plugins><build>创建子模块
Spring Boot 项目如何按模块进行拆分?

文章插图
 

Spring Boot 项目如何按模块进行拆分?

文章插图
 
在指定项目路径的时候需要注意,需要加入到父项目路径下
因为子项目是需要我们启动的项目所以我们需要更新子项目pom文件打包方式为jar
<name>demo-dao</name><packaging>jar</packaging><artifactId>demo-dao</artifactId><version>0.0.1-SNAPSHOT</version><description>dao project</description>由于父项目仅需要对子项目进行管理,所以可以直接删除掉父项目的src目录,保留pom文件即可
随后我们分别创建 dao、model、service、common、admin 共5个子模块,其中admin模块作为我们的启动项目,现在我们的目录结构是这样的


推荐阅读