【SpringBoot】多环境配置及代码打包

基本要点

1、配置文件优先级

配置文件可以放在哪些目录
加载优先级从高到低排序,file就是项目路径,classpath是resources路径

项目根目录下的config文件夹>项目根目录>resource目录下的config文件夹>resource路径下

2、多环境配置

1)properties

如果我们使用properties配置文件,想要哪个文件里的配置生效
使用spring.profiles.active=,后面加上对应环境的标签即可
【SpringBoot】多环境配置及代码打包_第1张图片

2)yaml文件

如果我们使用yaml配置文件,想要哪个文件里的配置生效
使用spring.profiles.active=,后面加上对应环境的标签即可

  • 方式一:定义在一个yaml文件中,用---分割
server:
  port: 8080

spring:
  profiles:
    active: test
---

server:
  port: 8081
spring:
  config:
    activate:
      on-profile: dev

---

server:
  port: 8082
spring:
  config:
    activate:
      on-profile: test

效果如图所示
【SpringBoot】多环境配置及代码打包_第2张图片

  • 方式二:定义在多个配置文件中
    【SpringBoot】多环境配置及代码打包_第3张图片

3、多环境打包

多环境打包其实主要还是和maven有关

假设我们的项目有三个环境,开发dev、测试test以及生产prod
如果服务启动端口在三个环境都不相同,如下图,我们在application.yaml中
将spring.profiles.active后面的值与pom.xml中的变量environment关联起来

【SpringBoot】多环境配置及代码打包_第4张图片

为了实现多环境打包,我们就需要在pom文件中添加如下声明


<build>
    <resources>
        
        <resource>
            <directory>src/main/resourcesdirectory>
            <excludes>
                <exclude>application*.yamlexclude>
            excludes>
        resource>

        
        <resource>
            <directory>src/main/resourcesdirectory>
            <filtering>truefiltering>
            <includes>
                <include>application.yamlinclude>
                <include>application-${environment}.yamlinclude>
            includes>
        resource>
    resources>
    <plugins>
        <plugin>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-maven-pluginartifactId>
        plugin>
    plugins>
build>


<profiles>
    <profile>
        
        <id>devid>
        <activation>
            
            <activeByDefault>trueactiveByDefault>
        activation>
        <properties>
            
            <environment>devenvironment>
        properties>
    profile>
    <profile>
        <id>testid>
        <activation>
            <activeByDefault>falseactiveByDefault>
        activation>
        <properties>
            <environment>testenvironment>
        properties>
    profile>
    <profile>
        <id>prodid>
        <activation>
            <activeByDefault>falseactiveByDefault>
        activation>
        <properties>
            <environment>prodenvironment>
        properties>
    profile>
profiles>

我们重新编译项目后,就可以勾选相关环境进行打包了
假如我们勾选test测试环境,启动项目后,观察服务端口是否为8084

如有错误,欢迎指正!!

你可能感兴趣的:(SpringBoot,spring,boot,java,spring)