SpringBoot profiles 实现多环境配置

2023年1月8日13:27:24

SpringBoot profiles 实现多环境配置


1. maven配置

配置maven中的 profiles 属性,分为开发环境 dev 和生产环境 prod

	<profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <environment>dev</environment>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <environment>prod</environment>
            </properties>
        </profile>
    </profiles>

在build属性中设置好 application.yml,用 ${environment} 来识别 dev 或者 prod

	<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>application*.yml</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>application.yml</include>
                    <include>application-${environment}.yml</include>
                </includes>
            </resource>
        </resources>
    </build>

2. application.yml配置

application.yml 中的设置:利用 spring.profiles.active 属性获取 @environment@ 变量的值

spring:
  profiles:
    active: '@environment@'

下面是 application-dev.yml 中的配置,上面的 ${environment} 能获取是 dev 还是 prod,获取后赋值给变量 environment,再由上面的@environment@ 确定使用的是哪一个application的配置

spring:
  mail:
    host: smtp.163.com
    username: 148181684116@163.com
    password: WEEASPCPAKDXSPDDFWEASW
  datasource:
    url: jdbc:mysql://localhost:3306/book_manager?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: update
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

3. @Profiles注解

@Profiles注解可以为一个特定的bean指定环境,使用方法如下:

@Bean
@Profile("dev")

这样,这个bean就被指定为使用dev环境配置,即只有在dev环境激活的情况下才会创建这个bean

也可以使用@Profile(“!xxx”)来指定不使用某种配置,意味着只要不激活某种配置就要创建这个bean

  • 作者:biscuittttt
  • 原文链接:https://blog.csdn.net/qq_51534363/article/details/125430319
    更新时间:2023年1月8日13:27:24 ,共 1581 字。