Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Boot 中如何配置 Profile

Spring Boot 中如何配置 Profile

作者头像
李红
发布于 2019-10-14 07:00:42
发布于 2019-10-14 07:00:42
93200
代码可运行
举报
文章被收录于专栏:Java程序猿部落Java程序猿部落
运行总次数:0
代码可运行
一个应用为了在不同的环境下工作,常常会有不同的配置,代码逻辑处理。Spring Boot 对此提供了简便的支持。 关键词: @Profile、spring.profiles.active

目录

  • 区分环境的配置
  • properties 配置
  • yml 配置
  • 区分环境的代码
  • 修饰类
  • 修饰注解
  • 修饰方法
  • 激活 profile
  • 插件激活 profile
  • main 方法激活 profile
  • jar 激活 profile
  • Java 代码中激活 profile

区分环境的配置

properties 配置

假设,一个应用的工作环境有:dev、test、prod

那么,我们可以添加 4 个配置文件:

  • applcation.properties - 公共配置
  • application-dev.properties - 开发环境配置
  • application-test.properties - 测试环境配置
  • application-prod.properties - 生产环境配置

applcation.properties 文件中可以通过以下配置来激活 profile:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring.profiles.active = test

yml 配置

与 properties 文件类似,我们也可以添加 4 个配置文件:

  • applcation.yml - 公共配置
  • application-dev.yml - 开发环境配置
  • application-test.yml - 测试环境配置
  • application-prod.yml - 生产环境配置

applcation.yml 文件中可以通过以下配置来激活 profile:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  profiles:
    active: prod

此外,yml 文件也可以在一个文件中完成所有 profile 的配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 激活 prod
spring:
  profiles:
    active: prod
# 也可以同时激活多个 profile
# spring.profiles.active: prod,proddb,prodlog
---
# dev 配置
spring:
  profiles: dev

# 略去配置

---
spring:
  profiles: test

# 略去配置

---
spring.profiles: prod
spring.profiles.include:
  - proddb
  - prodlog

---
spring:
  profiles: proddb

# 略去配置

---
spring:
  profiles: prodlog
# 略去配置

注意:不同 profile 之间通过 --- 分割

区分环境的代码

使用 @Profile 注解可以指定类或方法在特定的 Profile 环境生效。

修饰类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Configuration
@Profile("production")
public class JndiDataConfig {

    @Bean(destroyMethod="")
    public DataSource dataSource() throws Exception {
        Context ctx = new InitialContext();
        return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");
    }
}

修饰注解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Profile("production")
public @interface Production {
}

修饰方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Configuration
public class AppConfig {

    @Bean("dataSource")
    @Profile("development")
    public DataSource standaloneDataSource() {
        return new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.HSQL)
            .addScript("classpath:com/bank/config/sql/schema.sql")
            .addScript("classpath:com/bank/config/sql/test-data.sql")
            .build();
    }

    @Bean("dataSource")
    @Profile("production")
    public DataSource jndiDataSource() throws Exception {
        Context ctx = new InitialContext();
        return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");
    }
}

激活 profile

插件激活 profile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring-boot:run -Drun.profiles=prod

main 方法激活 profile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--spring.profiles.active=prod

jar 激活 profile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -jar -Dspring.profiles.active=prod *.jar

在 Java 代码中激活 profile

直接指定环境变量来激活 profile:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System.setProperty("spring.profiles.active", "test");

在 Spring 容器中激活 profile:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.getEnvironment().setActiveProfiles("development");
ctx.register(SomeConfig.class, StandaloneDataConfig.class, JndiDataConfig.class);
ctx.refresh();

使用方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -jar -Dspring.profiles.active=prod sbe-core-profile.jar
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java程序猿部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot的profile
此时读取的就是prod的配置,prod包含proddb,prodmq,此时可以读取proddb,prodmq下的配置。
suveng
2019/09/17
8300
SpringBoot的profile
spring boot 之 profile 配置
SPRING Environment 为此提供了一个 API,但是您通常会设置一个 System 属性(spring.profiles.active) 或者一个 OS 环境变量(SPRING_PROFILES_ACTIVE)。此外,您可以使用 -d 参数启动应用程序(记住将其放在 main 类或 jar 归档之前) ,如下所示:
acc8226
2022/09/21
7910
Spring Boot - Profile不同环境配置
Profile是什么 Profile我也找不出合适的中文来定义,简单来说,Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件。 Profile使用 假如有开发、测试、生产三个不同的环境,需要定义三个不同环境下的配置。 基于properties文件类型 你可以另外建立3个环境下的配置文件: applcation.properties application-dev.properties application-test.properties application-prod
Java技术栈
2018/03/30
1.3K0
Spring Boot - Profile不同环境配置
Spring Boot 2.4 配置文件将加载机制大变化
Spring Boot 2.4.0.M2 刚刚发布,它对 application.properties 和 application.yml 文件的加载方式进行重构。如果应用程序仅使用单个 application.properties 或 application.yml 作为配置文件,那么可能感受不到任何区别。但是如果您的应用程序使用更复杂的配置(例如,Spring Cloud 配置中心等),则需要来了解更改的内容以及原因。
冷冷
2020/10/12
1.6K0
【Spring Boot】006-多环境配置及配置文件位置
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本;
訾博ZiBo
2025/01/06
1550
【Spring Boot】006-多环境配置及配置文件位置
Spring Boot 2.4.0 发布,配置文件重大调整,不要乱升级!!
前段时间 Spring Boot 2.4.0 发布了,栈长作了一个新特性全盘解读,其中介绍了一个很重要的变革,那就是配置文件。
Java技术栈
2020/12/08
1.3K0
springboot中spring.profiles.include的妙用
我们有这样的一个springboot项目。项目分为开发、测试、生产三个不同阶段(环境),每个阶段都会有db、ftp、redis等的不同配置信息。我们可以使用spring.profiles.include来实现三种不同环境的一键切换。
用户7741497
2022/08/05
1.2K0
Spring_总结_04_高级配置(一)之Profile
我们在开发软件时,通常会进行跨环境部署。而在跨环境部署时,经常会遇到某些环境的配置并不适用于另一环境,导致应用无法正常运行。
shirayner
2018/08/10
2920
Spring Boot 2.0.0参考手册_中文版_Part IV_25
Spring Profiles提供了一种隔离部分应用配置的方式,并让这些配置只在特定的环境生效。任何带有@Profile标记的@Component或@Configuration在加载时都会受限制:
Tyan
2019/05/25
7530
是时候为Spring Boot 3.0做准备了
2018年2月28日Spring Boot进入2.0时代,距今已经超过4年了。2022 年11月Spring Boot 3.0将正式发布,它将基于Spring Framework 6.0,并且需要 Java 17 或更高版本,同时它也将是Jakarta EE 9的第一个Spring Boot版本。还有六个月的时间留给开发者来过渡到Spring Boot 3.0,今天胖哥将告诉你一些方法,以便于将来快速迁移到3.0。
码农小胖哥
2022/09/30
1.7K0
SpringBoot多环境配置,旧的已过时,新的有人还不知道
如果你使用Spring Boot 2.4及以上版本,你会发现Spring Boot中对多环境支持的配置项spring.profiles.active已经被废弃。而Spring Boot也一直在逐步推新的配置方式,可能很多人还不知道,本文就带大家一探究竟。
程序新视界
2021/12/07
3.6K0
8-SpringBoot配置-profile
我们在开发Spring Boot 应用时,通常同一套程序会被安装到不同环境,例如:开发、测试、生产等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile 功能就是来进行动态配置切换的。
Devops海洋的渔夫
2022/03/23
1.4K0
8-SpringBoot配置-profile
补习系列(22)-全面解读 Spring Profile 的用法
Spring框架提供了多profile的管理功能,我们可以使用profile功能来区分不同环境的配置。
美码师
2019/07/30
1.1K0
微服务架构之Spring Boot(二十九)
@Value 注释是核心容器功能,它不提供与类型安全配置属性相同的功能。下表总结了 @ConfigurationProperties 和 @Value 支持的功能:
用户1289394
2022/04/07
4220
微服务架构之Spring Boot(二十九)
SpringBoot Profile使用详解及配置源码解析
Profile对应中文并没有合适的翻译,它的主要作用就是让Spring Boot可以根据不同环境提供不同的配置功能支持。
程序新视界
2019/12/26
1.5K0
SpringBoot Profile 多环境配置
多配置文件配置(properties): 格式: applicatino-{profile}.properties
前端小鑫同学
2022/12/24
2720
嗯,挺全乎儿的,Spring Boot 多环境配置都在这里了,你喜欢哪种?
日常开发中至少有三个环境,分别是开发环境(dev),测试环境(test),生产环境(prod)。
huofo
2022/03/16
1.9K0
嗯,挺全乎儿的,Spring Boot 多环境配置都在这里了,你喜欢哪种?
实战!3分钟搞定Spring Boot 多环境配置
在实际项目开发的过程中,需要面对不同的运行环境,比如开发环境、测试环境、生产环境等,每个运行环境的数据库、Redis服务器等配置都不相同,每次发布测试、更新生产都需要手动修改相关系统配置。这种方式特别麻烦,费时费力,而且出错的概率极大。庆幸的是,Spring Boot为我们提供了更加简单方便的配置方案来解决多环境的配置问题,下面就来演示Spring Boot系统如何实现多环境配置。
章为忠学架构
2023/03/23
3.3K0
实战!3分钟搞定Spring Boot 多环境配置
SpringBoot Profile多环境配置
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml 例如:
jwangkun
2021/12/23
4270
超详细!Spring Boot项目结合Maven Profile实现多环境切换,轻松搞定开发部署难题
在当今的软件开发中,一个项目往往需要在不同的环境中运行,如开发、测试和生产环境。每个环境都有其独特的配置需求,如何高效地管理这些配置,让项目在不同环境中顺利运行,成为了开发者们必须面对的问题。Spring Boot 和 Maven 作为 Java 开发中非常流行的框架和构建工具,为我们提供了强大的解决方案,那就是 Spring Boot Profile 和 Maven Profile。本文将深入探讨如何将两者结合使用,实现多环境的灵活切换,极大地提升项目的可维护性和开发效率。
lyb-geek
2025/03/04
1921
超详细!Spring Boot项目结合Maven Profile实现多环境切换,轻松搞定开发部署难题
推荐阅读
相关推荐
SpringBoot的profile
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验