栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot+Maven做启动类与业务模块分离的架构模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot+Maven做启动类与业务模块分离的架构模式

之前的项目一直是启动类与Controller,Service,Mapper等包同级。Maven仅仅是引入其他模块或者第三方Jar包工具。 但是最新接手一套项目的架构非常有趣,也是记录一下分享一下,直接上示意图:

如果按照传统的模式,ABC每个子模块都会有各自的启动类。但是当前模式下:

上图一共五个Maven项目,父模块包含着四个子模块,子模块中有一个就是负责启动ABC那个子模块的启动类,ABC三套子模块中,又有各自的controller,service,mapper的包,然而仅需要ABC三个子模块的controller的包名路径一样(⚠️最好要保持一致,不然该案例的配置会扫描不到controller!!假设为com.jojo.zoo),那么启动类指定扫描路径就写成:

@SpringBootApplication(scanBasePackages = {"com.jojo.zoo"})

然后还要在启动类模块的pom文件中,把ABC模块都引入进来即可

如果不想启动类模块直接引入ABC,那就在父模块中的引入ABC:


	
		
			com.jojo.zoo
			jojo-A
			${jojo.version}
		

		
			com.jojo.zoo
			jojo-B
			${jojo.version}
		

		
			com.jojo.zoo
			jojo-C
			${jojo.version}
		
	

父模块的module必须包含ABC和启动类模块

	jojo-start
	jojo-A
	jojo-B
	jojo-C

这样更方便统一管理对应版本, 然后在XXX-Starter启动类模块的pom中加入:

	
		com.jojo.zoo
		jojo-A
	

	
		com.jojo.zoo
		jojo-B
	

	
		com.jojo.zoo
		jojo-C
	

这样就能正常启动,并且扫描到ABC三模块下的所有Controller了

为什么要这样拆分?

大佬说,部署的时候是用不到启动类的,所以根本不需要打包那一块代码,拆分出来更加整洁干净;同时也能更加灵活的组合对应模块,模块代码分离度更高

最后,任何情况下都要记得刷maven,clean + install
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884174.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号