一篇文章帶你掌握主流辦公框架——SpringBoot( 五 )

SpringBoot多環境啟動我們在開發過程中可能會采用不同的環境,頻繁的轉換環境當然不是一個好辦法
SpringBoot選擇配置多環境來控制環境選擇啟動
我們從兩種不同的配置文件方向來講解多環境:

  1. yaml多環境啟動:
# yaml采用 --- 來表示環境層級更換 # yaml采用 spring:profiles:active: 環境id 設置啟用的環境spring:profiles:active: dev---#開發環境#yaml采用 spring:config:activate:on-profile: 環境id 來定義當前環境id(規范寫法)spring:config:activate:on-profile: dev#以下屬于環境配置server:port: 80---#生產#yaml采用 spring:profiles: 環境id 來定義當前環境id(舊版寫法,同樣適用)spring:profiles: pro#以下屬于環境配置server:port: 81---#測試#yaml采用 spring:profiles: 環境id 來定義當前環境id(舊版寫法 , 同樣適用)spring:profiles: test#以下屬于環境配置server:port: 82---
  1. properties多環境啟動:
# application.properties文件(環境主文件)#設置啟用的環境spring.profiles.active=pro# application-dev.properties文件(環境配置文件)# 設置相關資源配置server.port=8080# application-pro.properties文件(環境配置文件)# 設置相關資源配置server.port=8081# application-test.properties文件(環境配置文件)# 設置相關資源配置server.port=8082SpringBoot前端多環境啟動我們前面提及過SpringBoot的快速啟動直接將jar包打包后發給前端就可以采用命令行啟動服務器
但是我們的配置可能會導致更多的細節問題:
  1. 當我們的yaml出現中文注釋時,需要將IDEA的encoding均設置為UTF-8

一篇文章帶你掌握主流辦公框架——SpringBoot

文章插圖
  1. 當我們的前端需要不同的環境配置時,我們不能在后臺手動設置默認環境,因而需要采用指令設置
前端在調用時 , 可以采用指令來更改默認環境默認開啟服務器java -jar jar包名稱.jar更換默認條件開啟服務器樣板java -jar jar包名稱.jar --配置屬性=配置值更換默認環境開啟服務器java -jar jar包名稱.jar --spring.profiles.active=test更換默認端口號開啟服務器java -jar jar包名稱.jar --server.port=88更換條件可以疊加使用java -jar jar包名稱.jar --spring.profiles.active=test --server.port=88SpringBoot多環境兼容問題SpringBoot中存在有很多的環境設置,不僅如此,包括有Maven也存在有多環境配置
那么Maven的多環境配置優先級和SpringBoot的多環境配置優先級誰的更高呢?
  • 我們的package操作是由Maven來完成的
  • 多環境優先級:Maven > SpringBoot
我們通過一個簡單的案例來證明:
  1. Maven中配置多環境屬性
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.0</version></parent><groupId>com.itheima</groupId><artifactId>springboot_05_maven_and_boot_profile</artifactId><version>0.0.1-SNAPSHOT</version><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!--開啟${}占位符作用于yaml文件中的解析--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><configuration><encoding>UTF-8</encoding><useDefaultDelimiters>true</useDefaultDelimiters></configuration></plugin></plugins></build><!--配置多個環境--><profiles><!--開發環境--><profile><id>dev</id><!--給出屬性值--><properties><profile.active>dev</profile.active></properties></profile><!--生產環境--><profile><id>pro</id><!--給出屬性值--><properties><profile.active>pro</profile.active></properties><!--默認為生產環境--><activation><activeByDefault>true</activeByDefault></activation></profile><!--測試環境--><profile><id>test</id><!--給出屬性值--><properties><profile.active>test</profile.active></properties></profile></profiles></project>

推薦閱讀