目录
多Profile文件
Spring Boot 的多 Profile
功能允许你在不同的环境中使用不同的配置,比如开发环境、测试环境和生产环境。你可以为每个环境定义不同的配置文件,并在运行时通过激活相应的
Profile 来加载相应的配置。
多 Profile 配置文件命名规则
Spring Boot 支持通过文件名来区分不同的 Profile,命名规则如下:
application-{profile}.properties # 或
application-{profile}.yml
其中 {profile} 是你定义的 Profile 名称,如 dev、test、prod 等。
激活 Profile
你可以通过以下几种方式激活 Profile:
命令行参数:
--spring.profiles.active=dev
application.properties 或 application.yml 文件中的属性:
spring.profiles.active=dev
环境变量:
SPRING_PROFILES_ACTIVE=dev
JVM 参数:
-Dspring.profiles.active=dev
Demo 示例
假设我们有三个环境:开发(dev)、测试(test)和生产(prod),每个环境都有不同的数据库配置。
- 配置文件
application-dev.yml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_dev
username: devuser
password: devpass
driver-class-name: com.mysql.cj.jdbc.Driver
application-test.yml
server:
port: 8082
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_test
username: testuser
password: testpass
driver-class-name: com.mysql.cj.jdbc.Driver
application-prod.yml
server:
port: 80
spring:
datasource:
url: jdbc:mysql://dbserver.example.com:3306/db_prod
username: produser
password: prodpass
driver-class-name: com.mysql.cj.jdbc.Driver
application.yml(通用配置)
spring:
profiles:
active: dev # 默认激活开发环境
- 主类
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
- 激活不同 Profile
通过命令行参数:运行应用时添加 --spring.profiles.active=prod
修改 application.yml:直接修改 spring.profiles.active 的值
环境变量或 JVM 参数:根据实际情况设置
注意事项
当激活多个 Profile 时,可以使用逗号分隔,如 --spring.profiles.active=dev,test。
如果有通用配置和特定 Profile 配置,Spring Boot 会先加载通用配置,然后覆盖相同属性的特定 Profile 配置。
确保不要在生产环境中泄露敏感信息,如数据库密码等。
以上就是 Spring Boot 多 Profile 配置文件的基本用法和 Demo 示例。
yml多文档块方式实现springboot动态配置
在Spring Boot中,YAML(YAML Ain’t Markup
Language)文件是一种常用的配置文件格式,它支持多文档块(也称为多文件或文档分隔符),这允许你在单个YAML文件中定义多个文档。然而,Spring
Boot本身并不直接支持在单个YAML文件中通过多文档块来动态切换配置。Spring
Boot加载YAML文件时,默认会合并所有文档块到一个配置源中,而不是作为独立的配置集。
不过,我们可以通过一些方法间接实现类似的效果,比如使用Spring Profiles(Spring配置文件)结合YAML文件的不同部分,或者使用外部化配置(如Spring Cloud Config)来动态加载不同的配置文件。
使用Spring Profiles
虽然这不是直接的多文档块动态配置,但可以通过Spring Profiles来模拟这种效果。你可以在YAML文件中定义多个profiles,每个profile包含不同的配置。
application.yml 示例:
spring:
profiles:
active: dev
---
spring:
config:
activate:
on-profile: dev
datasource:
url: jdbc:mysql://localhost:3306/devdb
username: devuser
password: devpass
---
spring:
config:
activate:
on-profile: prod
datasource:
url: jdbc:mysql://localhost:3306/proddb
username: produser
password: prodpass
在这个例子中,通过激活不同的profiles(dev或prod),可以加载不同的数据库配置。
使用Spring Cloud Config
对于更复杂或更动态的配置需求,可以使用Spring Cloud Config。Spring Cloud Config是一个为分布式系统提供外部化配置支持的服务。它允许你存储配置在中心位置(如Git仓库),并通过HTTP REST API提供配置给客户端。
步骤概述:
设置Spring Cloud Config Server:这个服务负责提供配置。
配置客户端(Spring Boot应用):客户端连接到Config Server以获取配置。
动态更新配置:通过更新Config Server中的配置,并通知客户端刷新配置,实现配置的动态更新。