一篇文章带你掌握主流办公框架——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>

推荐阅读