springboot多配置文件

springboot动态的获取不同环境下的配置文件

需求:在实际的开发过程中,我们可能会遇到不同的环境选用不同配置的情况,如开发环境连开发的数据库,服务器。生产环境连生产的数据库,服务器等。

方法一、启动时切换环境法

在这里插入图片描述
公共的配置可以放在application.properties中,各个环境的配置放在相应的配置文件中。
当使用某个环境的配置时,只需在公共的配置中(即application.properties)加一行下面的代码

spring.profiles.active=dev

即激活相应的配置文件。
注意:
此方法各个环境的配置文件的命名需是application-{}.properties

打成war包之后,可以在启动时切换环境
java -jar 项目的war包名 -P dev/test/pro 来切换不同的环境配置文件

方法二:打包时切换环境法

2.1配置文件命名
在这里插入图片描述
注:在springboot项目中,bootstrap.properties配置的优先级高于application.properties的配置文件

在上述截图配置文件中,bootstrap.properties的配置
在这里插入图片描述
该配置文件,只写这一项就可以

2.2 pom文件中的配置

 <project >
 <build>
       <resources>
           <resource>
               <directory>src/main/resources</directory>
               <filtering>true</filtering>
               <excludes>
                   <exclude>bootstrap-dev.properties</exclude>
                   <exclude>bootstrap-pro.properties</exclude>
                   <exclude>bootstrap-uat.properties</exclude>
                   <exclude>bootstrap.properties</exclude>
               </excludes>
           </resource>
           <resource>
               <directory>src/main/resources</directory>
               <filtering>true</filtering>
               <includes>
                   <include>bootstrap-${env}.properties</include>
                   <include>bootstrap.properties</include>
               </includes>
           </resource>
       </resources>

       <finalName>SpringbootWeb</finalName>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
       </plugins>
   </build>
    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
               <!-- 默认启动的配置文件-->
                <activeByDefault>true</activeByDefault>  
            </activation>
        </profile>
        <profile>
            <id>pro</id>
            <properties>
                <env>pro</env>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <env>test</env>
            </properties>
        </profile>
    </profiles>
    </project>

备注:
使用SpringBoot,发现其中的bootstrap.properties文件无法生效,改成yaml格式也无济于事。

最后调查发现原来是因为SpringBoot本身并不支持,需要和Spring Cloud 的组件结合——只有加上Spring Cloud Context依赖才能生效。

  <!--需要引入该jar才能使bootstrap配置文件生效-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-context</artifactId>
        </dependency>

版本号问题注意一下

**该方法进行环境切换时,是在打包的时候执行命令
mvn clean package -Dmaven.test.skip=true -P dev/test/pro

通过 java -jar 包名
启动项目时,默认是打包时的环境配置文件**

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Config中,有几种常见的配置文件,包括`bootstrap.yml`、`bootstrap-dev.yml`和`bootstrap-local.yml`。这些配置文件具有不同的优先级和用途。 1. `bootstrap.yml`是用于获取外部配置的特殊配置文件,它的加载优先级比其他配置文件(如`application.yml`或`application.properties`)更高[^1]。它主要用于加载一些启动阶段需要用到的配置信息,例如连接到Spring Cloud Config Server的配置、加密/解密信息、连接到外部数据库的配置等。由于这些配置信息在应用程序启动的早期阶段就需要用到,所以放在`bootstrap.yml`中确保它们在其他配置之前加载。此外,`bootstrap.yml`不会被本地配置文件覆盖,它的优先级更高,确保这些关键配置的安全性和准确性。 2. `bootstrap-dev.yml`是`bootstrap.yml`的一个特定的开发环境profile,用于在开发环境下加载特定的外部配置信息。在开发环境中,可能需要与生产环境不同的配置,例如连接到不同的数据库、使用不同的服务地址等。通过使用`bootstrap-dev.yml`可以轻松地区分开发环境和其他环境的配置。当在开发环境启动应用程序时,Spring Cloud Config将会加载`bootstrap.yml`和`bootstrap-dev.yml`的配置,并根据当前激活的profile(如通过`spring.profiles.active`属性指定)加载对应的配置。 3. `bootstrap-local.yml`是一个自定义的本地配置文件,用于加载本地环境下的特定配置信息。它的优先级比`bootstrap.yml`和`bootstrap-dev.yml`更高,可以用于覆盖这两个文件中的配置。通过使用`bootstrap-local.yml`,可以在本地环境中加载特定的配置,例如本地数据库的连接信息、本地服务的地址等。 综上所述,`bootstrap.yml`具有最低的优先级,用于加载一些启动阶段需要用到的配置信息。`bootstrap-dev.yml`是用于开发环境的特定配置文件,用于加载开发环境下的配置。`bootstrap-local.yml`是一个自定义的本地配置文件,用于加载本地环境下的特定配置信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值