当前位置: 首页 > 科技观察

Spring Boot - 多模块多环境配置,大厂必备技能

时间:2023-03-11 23:06:27 科技观察

SpringBoot——多模块多环境配置,大厂必备技能如何开发子模块?公司里有那么多环境,相互隔离,配置各不相同。如何实现多环境?对比我创建的项目,代码都堆在一个模块里,模块的概念可能不太清楚;更不用说多个环境了;今天一文就做到了,离大厂又近了一步。多模块模块在模块化编程中,开发人员将程序分解为离散的功能块,称为模块。多模块的优势每个模块都具有高内聚的特性,使得验证、调试和测试变得容易。编写良好的模块提供可靠的抽象和封装边界,允许每个模块具有连贯的设计和明确的目的。实现多模块创建maven项目配置多模块添加模块依赖创建maven项目配置多模块在pom中添加modules节点,模块名称任意名称,可以配置多个;seckill-apiseckill-biz一般到这里,多模块配置就完成了。但在现实中,我们的模块需要相互依赖,每个模块也依赖第三方模块;添加模块依赖seckill-api(api层)依赖seckill-biz(业务层),在api模块的pom文件中,添加如下配置com.sifou.coursesseckill-biz1.0-SNAPSHOT假设api和biz模块都依赖lombok和validation-api,三分之二-方模块(包),如何实现?方案一:在每个(biz&api)模块中,添加依赖;方案二:在父模块中添加依赖;相信大家都会选择方案2;在根项目的pom文件中添加如下配置;1.18.82.0.1.Finalorg.projectlomboklombok${lombok.version}javax.validation验证-api<版本>${javax.validation}到这里,配置完成;(是否很清楚,请投票,点赞)也可以使用mvndependency:tree命令查看依赖(需要核心技能,解决包冲突,解决包版本无效)[INFO]Scanningforprojects...[INFO]-----------------------------------------------------------------------[INFO]ReactorBuildOrder:[INFO][INFO]com.sifou.courses.seckill[INFO]seckill-biz[INFO]seckill-api[信息][信息]-------------------------------------------------------------------[信息]Buildingcom.sifou.courses.seckill1.0-SNAPSHOT[信息]----------------------------------------------------------------------[信息][信息]---maven-dependency-plugin:3.1.2:tree(default-cli)@com.sifou.courses。秒杀---[INFO]com.sifou.courses:com.sifou.courses.seckill:pom:1.0-SNAPSHOT[INFO]+-org.projectlombok:lombok:jar:1.18.8:compile[INFO]\-javax.validation:validation-api:jar:2.0.1.Final:compile[INFO][INFO]--------------------------------------------------------------------------[INFO]Buildingseckill-biz1.0-快照[信息]------------------------------------------------[信息][INFO]---maven-dependency-plugin:3.1.2:tree(default-cli)@seckill-biz---[INFO]com.sifou.courses:seckill-biz:jar:1.0-SNAPSHOT[信息]+-org.projectlombok:lombok:jar:1.18.8:compile[INFO]\-javax.validation:validation-api:jar:2.0.1.Final:compile[INFO][INFO]------------------------------------------------------------------[信息]Buildingseckill-api1.0-SNAPSHOT[信息]-------------------------------------------------------------------[信息][信息]---maven-dependency-plugin:3.1.2:tree(default-cli)@seckill-api---[信息]com.sifou.courses:seckill-api:jar:1.0-SNAPSHOT[INFO]+-com.sifou.courses:seckill-biz:jar:1.0-SNAPSHOT:compile[INFO]+-org.projectlombok:lombok:jar:1.18.8:compile[INFO]\-javax.validation:验证-api:jar:2.0.1.Final:compile[INFO]----------------------------------------------------------------------[INFO]ReactorSummary:[INFO][INFO]com.sifou.courses.seckill.....................SUCCESS[1.007s][INFO]seckill-biz......................SUCCESS[0.040s][INFO]seckill-api..........................成功[0.036s][信息]----------------------------------------------------------------------[信息]构建成功[信息]------------------------------------------------------------------------[INFO]Totaltime:1.862s[INFO]Finishedat:2020-10-29T23:18:09+08:00[INFO]FinalMemory:27M/230M[INFO]---------------------------------------------------------------------Processfinishedwithxitcode0多个环境在工作,我们面临着开发、测试、生产等多种环境。一大步;支持项目内多环境配置;实现真实环境下的多环境启动;支持多环境配置创建properties文件指定环境参数创建properties文件在resources文件夹下创建三个后缀为properties的文件例如:application-dev.properties:开发环境application-test.properties:测试环境application-prod。properties:生产环境指定环境参数spring.profiles.active=test这里,多环境配置完成;SpringBoot中多环境配置文件名必须满足application-{profile}.properties的固定格式,其中{profile}对应你的环境标识;例如:application-dev.properties:开发环境application-test.properties:测试环境application-prod.properties:生产环境application.properties具体通过spring.profiles.active激活一个或多个配置文件,如果没有指定profile配置文件,springboot会默认启动application-default。特性;以及运行哪个配置文件:spring.profiles.active=test会加载application-test.properties配置文件的内容多环境启动刚才讲了如何在项目中配置,那么在真实环境中如何启动呢?难不成,改配置???当然不是,正确的解决方法是-Dspring.profiles.active=${PROFILE}在启动脚本中加上上面的,根据环境指定要加载的配置文件;欢迎更多交流。最后,我在师府开设了《大厂电商 Java 秒杀系统架构实战》课程。本课程从秒杀场景出发,分为基础、进阶、架构三个部分。基础篇重点介绍功能的实现(导购、交易),高级篇重点介绍突破超卖和突发流量给系统带来的挑战,高并发的灵丹妙药,缓存的使用方法;架构篇重点讲述了如何保证系统的高可用(方法论+最佳实践)通过秒杀典型的高并发场景,带你深入了解如何设计高并发系统。