SpringBoot多环境配置

文章目录

概要

Spring Boot 项目的多环境配置方案,通过 application.yml 配合 application-xxx.yml,可灵活切换开发、测试和生产环境。

推荐的配置结构

bash 复制代码
src/
 └── main/
     ├── java/
     └── resources/
         ├── application.yml             # 主配置入口,统一设置 profile
         ├── application-dev.yml         # 开发环境配置
         ├── application-test.yml        # 测试环境配置(可选)
         └── application-prod.yml        # 生产环境配置

各配置文件内容示例

1、application.yml ------ 统一入口配置

yml 复制代码
spring:
  profiles:
    active: dev  # 默认环境,可通过命令行或环境变量覆盖

# 公共配置:所有环境都生效
server:
  servlet:
    context-path: /api

2、application-dev.yml ------ 本地开发配置

yml 复制代码
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/dev_db
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  jackson:
    serialization:
      indent_output: true

3、 application-prod.yml ------ 生产环境配置

yml 复制代码
server:
  port: 8081

spring:
  datasource:
    url: jdbc:mysql://prod-db:3306/prod_db
    username: root
    password: root # 密码设置复杂一点!
    driver-class-name: com.mysql.cj.jdbc.Driver
  jackson:
    serialization:
      indent_output: false
logging:
  level:
    root: WARN

启动时切换环境

1、java -jar app.jar --spring.profiles.active=prod 【命令行指定(最常用)】

2、 IDEA 中配置 VM 参数(本地开发调试)

使用 @Profile 动态加载 Bean

基于不同环境加载不同的Bean

java 复制代码
@Configuration
public class DataSourceConfig {

    @Bean
    @Profile("dev")
    public DataSource devDataSource() {
        // return dev datasource
    }

    @Bean
    @Profile("prod")
    public DataSource prodDataSource() {
        // return prod datasource
    }
}
相关推荐
YuTaoShao2 分钟前
Java八股文——Redis「淘汰删除篇」
java·开发语言·redis
vx Biye_Design13 分钟前
SSM学生社团管理系统-计算机毕业设计源码75136
spring boot·sql·mysql·ajax·bootstrap·mybatis
小黑随笔15 分钟前
【Golang 实战 ELK 日志系统全流程教程(一):ELK 是什么?为什么要用 ELK?】
后端·elk·golang
FlyWIHTSKY18 分钟前
idea中push拒绝,merge,rebase的区别
java·ide·intellij-idea
Code季风24 分钟前
深入实战 —— Protobuf 的序列化与反序列化详解(Go + Java 示例)
java·后端·学习·rpc·golang·go
深栈解码36 分钟前
OpenIM 源码深度解析系列(十二):群聊读扩散机制场景解析
后端
篱笆院的狗41 分钟前
Spring Boot 工程启动以后,我希望将数据库中已有的固定内容,打入到 Redis 缓存中,请问如何处理?
数据库·spring boot·缓存
MrWho不迷糊1 小时前
模板方法与工厂模式实践——一套通用交易执行模型
后端·设计模式
我想说一句1 小时前
WEUI Uploader源码学习笔记:从CSS到Stylus
前端·后端
Leslie_Lei1 小时前
【pdf】Java代码生成PDF
java·pdf