Profile多环境支持

本文详细介绍Spring框架中Profile功能的使用,包括多环境配置文件的创建、YAML多文档块配置方式及激活Profile的方法,适用于快速切换开发、测试、生产等不同环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:Profile是Spring对不同环境提供不同配置功能的支持,可以通过激活,指定参数等方式快速切换环境

 

1.多profile文件形式

-   格式 : application-{profile}.properties/yml

  • application-one.properties   application-two.properties

默认使用application.properties文件的配置,可以在里面指定需要激活的环境

-   配置文件 : spring.profiles.active=one

spring.profiles.active=one

2.yml配置文件多profile文档块模式:

server:
  port: 8081
spring:
  profiles:
    active: one
---
server:
  port: 8082
spring:
  profiles: one
---
server:
  port: 8083
spring:
  profiles: two

3.激活方式:

-   命令行 : --spring.profiles.active=one

在cmd窗口中的命令行:

-   jvm(虚拟机)参数 :  -Dspring.profiles.active=one     (-D是固定写法)

推荐使用yml多文档块方式配置!

### Spring Boot多环境配置方法 #### 使用`application-{profile}.properties/yml` 为了使Spring Boot应用程序能够适应不同部署环境的需求,可以为每种环境定义独立的属性文件。这些文件通常命名为`application-{profile}.yml`或`.properties`形式,在启动应用时指定激活哪个特定版本的设置。 例如: - `application-dev.yml`: 开发环境下使用的配置; - `application-prod.yml`: 生产环境中采用的不同参数设定; 当指定了活动概要(`active profile`)之后,框架会自动加载对应的自定义化资源文件并覆盖默认值[^4]。 ```yaml # application-dev.yml 示例 server: port: 8081 spring: datasource: url: jdbc:mysql://localhost:3306/devdb?useSSL=false&serverTimezone=UTC username: root password: secret ``` 对于Java代码内部,则可以通过`@ConfigurationProperties`注解绑定外部化的配置项至实体类字段上,或是借助于`Environment`接口获取单个key-value对。 #### 命令行参数与环境变量 除了静态地编写多个YAML/Properties文档外,还可以动态调整正在运行的应用程序的行为模式——即通过传递命令行选项给JVM进程来即时改变某些全局性的开关状态或者路径指向等重要信息。这同样适用于操作系统级别的ENV Variables机制,它们会在实例初始化阶段被读取进来作为补充数据源之一参与最终决策过程[^1]。 假设现在有一个名为`SPRING_PROFILES_ACTIVE`的环境变量设成了`prod`,那么即使存在其他同名却位于不同目录下的配置文件,默认情况下也只会优先考虑该生产版的内容。 #### @Profile 注解实践案例 针对题目提到的情况——即想要切换连接到MySQL、Oracle以及Sybase三种不同类型的关系型数据库系统之间工作的话,就可以基于上述两种方式的基础上进一步引入面向切面编程的思想,也就是利用`@Profile`标签标记那些仅限于某几个场景下才允许实例化的组件bean对象。 具体做法如下所示: ##### 定义DataSource Bean 先分别建立三个实现了相同接口但是各自对应着不一样的驱动器URL字符串以及其他必要的认证凭证细节的服务提供者实现类,并在其上方加上相应的限定符说明适用范围。 ```java @Configuration public class DataSourceConfig { @Bean(name="mysqlDS") @Profile("mysql") public DataSource mysqlDataSource() { HikariDataSource dataSource = new HikariDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql://host:port/dbname"); dataSource.setUsername("user"); dataSource.setPassword("pass"); return dataSource; } @Bean(name="oracleDS") @Profile("oracle") public DataSource oracleDataSource(){ // Similar setup for Oracle... } @Bean(name="sybaseDS") @Profile("sybase") public DataSource sybaseDataSource(){ // Setup for Sybase... } } ``` 此时如果希望让整个工程处于“测试”状态下只启用MySQL链接池服务,只需要简单修改一下启动脚本中的额外参数部分即可完成转换操作:`--spring.profiles.active=mysql` 或者 设置环境变量 `export SPRING_PROFILES_ACTIVE=mysql`. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值