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

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

紫云网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联成立于2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联

  •  在一个工程里面如何实现多模块,分模块开发怎么搞?
  •  公司那么多环境,互相隔离,配置各不相同,如何实现多环境?

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

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

多模块

模块

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

多模块的优点

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

实现多模块

  1.  创建maven工程
  2.  配置多模块
  3.  添加模块依赖

创建maven工程

配置多模块

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

 
 
 
 
  1.   
  2.  seckill-api  
  3.  seckill-biz  
  4.  

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

添加模块依赖

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

 
 
 
 
  1.   
  2.    
  3.       com.sifou.courses  
  4.      seckill-biz  
  5.      1.0-SNAPSHOT  
  6.    
  7.  

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

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

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

 
 
 
 
  1.   
  2.       1.18.8  
  3.       2.0.1.Final  
  4.     
  5.     
  6.         
  7.           org.projectlombok  
  8.           lombok  
  9.           ${lombok.version}  
  10.         
  11.         
  12.           javax.validation  
  13.           validation-api  
  14.           ${javax.validation}  
  15.         
  16.    

到这里,配置完成;(是不是很清晰,请投币,点赞)

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

 
 
 
 
  1. [INFO] Scanning for projects...  
  2. [INFO] ------------------------------------------------------------------------  
  3. [INFO] Reactor Build Order:  
  4. [INFO]   
  5. [INFO] com.sifou.courses.seckill  
  6. [INFO] seckill-biz  
  7. [INFO] seckill-api  
  8. [INFO]                                                                        
  9. [INFO] ------------------------------------------------------------------------  
  10. [INFO] Building com.sifou.courses.seckill 1.0-SNAPSHOT  
  11. [INFO] ------------------------------------------------------------------------  
  12. [INFO]   
  13. [INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ com.sifou.courses.seckill ---  
  14. [INFO] com.sifou.courses:com.sifou.courses.seckill:pom:1.0-SNAPSHOT  
  15. [INFO] +- org.projectlombok:lombok:jar:1.18.8:compile  
  16. [INFO] \- javax.validation:validation-api:jar:2.0.1.Final:compile  
  17. [INFO]                                                                       
  18. [INFO] ------------------------------------------------------------------------  
  19. [INFO] Building seckill-biz 1.0-SNAPSHOT  
  20. [INFO] ------------------------------------------------------------------------  
  21. [INFO]   
  22. [INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ seckill-biz ---  
  23. [INFO] com.sifou.courses:seckill-biz:jar:1.0-SNAPSHOT  
  24. [INFO] +- org.projectlombok:lombok:jar:1.18.8:compile  
  25. [INFO] \- javax.validation:validation-api:jar:2.0.1.Final:compile  
  26. [INFO]                                                                        
  27. [INFO] ------------------------------------------------------------------------ 
  28. [INFO] Building seckill-api 1.0-SNAPSHOT  
  29. [INFO] ------------------------------------------------------------------------  
  30. [INFO]   
  31. [INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ seckill-api ---  
  32. [INFO] com.sifou.courses:seckill-api:jar:1.0-SNAPSHOT  
  33. [INFO] +- com.sifou.courses:seckill-biz:jar:1.0-SNAPSHOT:compile 
  34. [INFO] +- org.projectlombok:lombok:jar:1.18.8:compile  
  35. [INFO] \- javax.validation:validation-api:jar:2.0.1.Final:compile  
  36. [INFO] ------------------------------------------------------------------------  
  37. [INFO] Reactor Summary:  
  38. [INFO]   
  39. [INFO] com.sifou.courses.seckill .......................... SUCCESS [  1.007 s]  
  40. [INFO] seckill-biz ........................................ SUCCESS [  0.040 s]  
  41. [INFO] seckill-api ........................................ SUCCESS [  0.036 s]  
  42. [INFO] ------------------------------------------------------------------------  
  43. [INFO] BUILD SUCCESS  
  44. [INFO] ------------------------------------------------------------------------  
  45. [INFO] Total time: 1.862 s  
  46. [INFO] Finished at: 2020-10-29T23:18:09+08:00  
  47. [INFO] Final Memory: 27M/230M  
  48. [INFO] ------------------------------------------------------------------------ 
  49. Process finished with exit code 0 

多环境

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

  •  在工程中支持多环境配置;
  •  在真实环境中实现多环境启动;

支持多环境配置

  1.  创建properties文件
  2.  指定环境参数

创建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配置文件内容

多环境启动

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

 
 
 
 
  1. -Dspring.profiles.active=${PROFILE} 

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

以上,欢迎大家多交流。

最后

我在思否开了一门《大厂电商 Java 秒杀系统架构实战》课程,本课程从秒杀场景出发,分为基础篇、进阶篇、架构篇3部分。

  •  基础篇重点在于实现功能(导购、交易)
  •  进阶篇重点突破超卖、突发流量给系统带来的挑战,高并发银弹,缓存如何使用;
  •  架构篇重点讲解如何保障系统高可用(方法论+最佳实践)

通过秒杀这个典型的高并发场景,带你彻底搞明白高并发系统该如何设计。 

当前名称:SpringBoot-多模块多环境配置,大厂必备技能
地址分享:http://www.shufengxianlan.com/qtweb/news6/26006.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联