持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
今天我们看下搭建一个springboot的模块化环境,先说下业务场景,在我们进行项目部署的时候,如果就一个环境我们可能不用考虑这么多,直接一套pom就完成了所有的操作,但是如果我们需要将项目部署在阿里、腾讯、华为这些云环境上该怎么办?阿里系的确做的很兼容,但如果是华为的呢?你需要有专门的解决包问题的流程,如果我们不分多个环境的模块的话指望着记录pom文件,恐怕随着业务的增加会心有余而力不足吧,而且每次开发、测试、生产各个环境你都要手动或者执行脚本修改;
可是如果我们将需要的所有业务代码写在一个模块里,然后新增几个环境模块,在环境模块里引入业务模块就可以很好解决这个问题了,每次要啥直接maven打包即可,不需要每次为pom而绞尽脑汁,
首先我们要建一个主项目模块,然后删除里面的src,在这里面建几个我们的工具模块、通用模块common,实体类模块dto、中间件模块es-redis(可放入其他模块中);业务模块svc、启动模块svc-gen(这两个模块用一个模块将它两包裹着)建完后的主体是这样的
这里注意,一切模块都按idea设置的来,不要改动,导致模块没在主模块中显示,导致后续要手动加入;最后主模块pom是这么的
<modules>
<module>springboot-xxx-es</module>
<module>springboot-xxx-dto</module>
<module>springboot-xxx-common</module>
<module>springboot-xxx-redis</module>
<module>springboot-xxx-svc-main</module>
</modules>
添加完以后我们还需要在最外层pom里加上我们所有的非svc-main的模块,svc-main之所以不加是因为我们的启动环境是在svc-main里,会在启动模块加上我们的svc依赖,最外层加上这些模块要记住,不然我们的controller是无法被加载的,咱们拿一个出来举例
<dependency>
<groupId>com.xxx</groupId>
<artifactId>springboot-xxx-es</artifactId>
<version>${spring-boot-xxx.version}</version>
</dependency>
最后环境模块写上我们的启动类,并开启扫描包
@SpringBootApplication(scanBasePackages = {"com.xxx"})
在svc业务模块写上我们的业务逻辑接口测试一下
@RestController
@RequestMapping("/api/test1")
public class TestDemo {
@GetMapping("/test")
public void test(){
System.out.println("123");
}
}
调通后表示模块化环境我们是搭建成功的了,如果调接口报404,一定要看模块有没有引入在最外层pom;后面我们会一点一点往上加东西,下一讲我们就往上堆数据库吧,代码我会在大概redis弄好的时候放上去,很快的;好啦🥗🥗🥗;
结束结束,那就🛴🛴🛴