【SpringBoot】多配置文件的实现 yaml:@profileActive@ && @profile.active@

SpringBoot 多环境配置文件

0. 配置文件:yaml properties

SpringBoot配置文件.yaml(.yml)和.properties
application.yml 与 applicaiton.properties 的效果并没有太大的区别,都是应用启动配置文件,springboot 项目在运行时都能识别到,只是语法上需要注意进行区别,写法转换在文章中均已提及

1. 应用场景

在开发过程中,一个项目可能会使用到不同的环境配置进行开发,如:

  • dev(生产环境):application-dev.yml
  • test(测试环境):application-test.yml
  • pre(预发环境):application-pre.yml
  • prod(生产环境):application-prod.yml
    可能需要指定不同的数据库,不同的应用端口,因此,需要使用多个配置文件进行声明。
    不同的环境后缀名说明:环境整理(pro、sit、uat、test、pre、dev、fat )

2. 配置文件优先级

SpringBoot------yaml文件多环境配置以及配置文件位置、多环境激活(七)
不同目录下的配置文件优先级,从上至下优先级递减:

  1. file: ./config/applicaiton.yml
  2. file: ./application.yml
  3. classpath: ./config/application.yml
  4. classpath: ./application.yml

【类路径 classpth:java或者resources目录】
【file: 项目路径】
【SpringBoot】多配置文件的实现 yaml:@profileActive@ && @profile.active@_第1张图片

3. 多配置文件启用

3.1 根配置文件中指定

application.yml 指定启用:

spring:
	profiles:
		active: dev		## 启用 application-dev.yml 文件配置,dev ☞ -后缀名

application.properties 文件中启用

spring.profiles.active: dev		## 启用 application-dev.yml 文件配置,dev ☞ -后缀名

3.2 使用 mvn 配置进行指定,运行时指定配置文件

以 application.xml 进行指定:

spring:
	profiles:
		active: @profileActive@		## @profileActive@ 与 properties 中的关键字相同

单个应用中,在 pom.xml 中进行指定,代码如下:


<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.0modelVersion>
    
     <profiles>
        <profile>
            
            <id>devid>
            <properties>
                <profileActive>devprofileActive>		
            properties>
            <activation>
                <activeByDefault>trueactiveByDefault>
            activation>
        profile>
        <profile>
            
            <id>qaid>
            <properties>
                <profileActive>qaprofileActive>
            properties>
        profile>
        <profile>
            
            <id>preid>
            <properties>
                <profileActive>preprofileActive>
            properties>
        profile>
        <profile>
            
            <id>prodid>
            <properties>
                <profileActive>prodprofileActive>
            properties>
        profile>
    profiles>
    

因为使用 IDEA 建立的 springboot 项目,故未使用命令行方式进行启动,采用了手动进行选择的方式,指定启用配置
【SpringBoot】多配置文件的实现 yaml:@profileActive@ && @profile.active@_第2张图片

4. 可能会遇见的问题

found character '@' that cannot start any token. (Do not use @ for indentation)
 in 'reader', line 10, column 13:
        active: @profileActive@

解决方式一:刷新 mvn 配置依赖可以得到解决
解决方式二:SpringBoot的yaml配置文件,提示Do not use @ for indentation
在idea中仍然需要手动刷新 mvn

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