Java从入门到精通之Spring Boot - 多模块多环境配置
小职 2020-11-06 来源 : 阅读 680 评论 0

摘要:本篇介绍了Java Spring Boot多模块多环境配置,希望对Java Spring boot的学习有所帮助。

本篇介绍了Java Spring Boot多模块多环境配置,希望对Java Spring boot的学习有所帮助。

Java从入门到精通之Spring Boot - 多模块多环境配置

小伙伴们在初入职场(尤其大厂)看到别人的工程,是否曾有如下困扰:

 

 在一个工程里面如何实现多模块,分模块开发怎么搞?

 公司那么多环境,互相隔离,配置各不相同,如何实现多环境?

反观自己创建的工程,代码都堆在一个模块里面,或许还不清楚模块的概念;更别提多环境了;

 

今天我们一文搞定,让我们离大厂更近一步。

 

多模块

 

模块

 

在模块化编程中,开发者将程序分解成离散功能块(discrete chunks of functionality),并称之为模块。

 

多模块的优点

 

每个模块具高内聚的特性,使得校验、调试、测试轻而易举。 精心编写的模块提供了可靠的抽象和封装界限,使得每个模块都具有条理清楚的设计和明确的目的。

 

实现多模块

 

 创建maven工程

 配置多模块

 添加模块依赖

创建maven工程

 Java从入门到精通之Spring Boot - 多模块多环境配置

 Java从入门到精通之Spring Boot - 多模块多环境配置

 Java从入门到精通之Spring Boot - 多模块多环境配置

 

 

 

 

配置多模块

 

在pom中,增加modules节点,模块名<module>任意名称</module>,可以配置多个;

 

<modules>  

 <module>seckill-api</module>  

 <module>seckill-biz</module>  

</modules>

 Java从入门到精通之Spring Boot - 多模块多环境配置

 

通常到这里,多模块就配置完毕了。但现实中,我们的模块间是需要相互依赖的,同时每个模块还要依赖第三方模块;

 

添加模块依赖

 

seckill-api(api层)要依赖seckill-biz(业务层),在api模块的pom文件中,增加如下配置

 

<dependencies>  

 <dependency>  

      <groupId>com.sifou.courses</groupId>  

     <artifactId>seckill-biz</artifactId>  

     <version>1.0-SNAPSHOT</version>  

 </dependency>  

</dependencies>

假定,api和biz模块都依赖lombok,validation-api这两个第三方模块(包),如何实现?

 

 方案1:在每个(biz & api)模块中,增加依赖;

 方案2:在父模块增加依赖;

相信大家都会选择方案2;在root工程中的pom文件,增加如下配置;

 

<properties>  

      <lombok.version>1.18.8</lombok.version>  

      <javax.validation>2.0.1.Final</javax.validation>  

  </properties>  

  <dependencies>  

      <dependency>  

          <groupId>org.projectlombok</groupId>  

          <artifactId>lombok</artifactId>  

          <version>${lombok.version}</version>  

      </dependency>  

      <dependency>  

          <groupId>javax.validation</groupId>  

          <artifactId>validation-api</artifactId>  

          <version>${javax.validation}</version>  

      </dependency>  

  </dependencies>

到这里,配置完成;

 

 Java从入门到精通之Spring Boot - 多模块多环境配置

 

还可以用mvn dependency:tree命令,来查看依赖关系(必备核心技能,解决包冲突,解决包版本失效)

 

[INFO] Scanning for projects...  

[INFO] ------------------------------------------------------------------------  

[INFO] Reactor Build Order:  

[INFO]   

[INFO] com.sifou.courses.seckill  

[INFO] seckill-biz  

[INFO] seckill-api  

[INFO]                                                                        

[INFO] ------------------------------------------------------------------------  

[INFO] Building com.sifou.courses.seckill 1.0-SNAPSHOT  

[INFO] ------------------------------------------------------------------------  

[INFO]   

[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ com.sifou.courses.seckill ---  

[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] Building seckill-biz 1.0-SNAPSHOT  

[INFO] ------------------------------------------------------------------------  

[INFO]   

[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ seckill-biz ---  

[INFO] com.sifou.courses:seckill-biz:jar: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] Building seckill-api 1.0-SNAPSHOT  

[INFO] ------------------------------------------------------------------------  

[INFO]   

[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ seckill-api ---  

[INFO] 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:validation-api:jar:2.0.1.Final:compile  

[INFO] ------------------------------------------------------------------------  

[INFO] Reactor Summary:  

[INFO]   

[INFO] com.sifou.courses.seckill .......................... SUCCESS [  1.007 s]  

[INFO] seckill-biz ........................................ SUCCESS [  0.040 s]  

[INFO] seckill-api ........................................ SUCCESS [  0.036 s]  

[INFO] ------------------------------------------------------------------------  

[INFO] BUILD SUCCESS  

[INFO] ------------------------------------------------------------------------  

[INFO] Total time: 1.862 s  

[INFO] Finished at: 2020-10-29T23:18:09+08:00  

[INFO] Final Memory: 27M/230M  

[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

多环境

 

在工作中,我们面临开发、测试、生产等等多个环境,要完美实现多环境,总共可以分文两个大的步骤;

 

 在工程中支持多环境配置;

 在真实环境中实现多环境启动;

支持多环境配置

 

 创建properties文件

 指定环境参数

创建properties文件

 

在resources文件夹下创建三个以properties为后缀的文件

 

例如:

 

application-dev.properties:开发环境

 

application-test.properties:测试环境

 

application-prod.properties:生产环境

 

指定环境参数

 

spring.profiles.active=test

 

到这里,多环境配置完成;

 

在Spring Boot中多环境配置文件名必须满足:application-{profile}.properties的固定格式,其中{profile}对应你的环境标识;

 

例如:

 

application-dev.properties:开发环境

 

application-test.properties:测试环境

 

application-prod.properties:生产环境

 

application.properyies通过spring.profiles.active来具体激活一个或者多个配置文件,如果没有指定任何profile的配置文件的话,spring boot默认会启动application-default.properties;而哪个配置文件运行:

 

spring.profiles.active=test

 

就会加载application-test.properties配置文件内容

 

多环境启动

 

刚刚讲了在工程中如何配置,那么在真正的环境中如何启动?莫非,改配置吗???当然不是,正解如下。

 

-Dspring.profiles.active=${PROFILE}

在启动脚本中,增加上面这个,按环境来指定要加载的配置文件;

 

以上,欢迎大家多交流。

 




关注“职坐标在线”(Zhizuobiao_Online)公众号,免费获取最新技术干货教程资源哦

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程