SpringBoot中使用Spring profile进行配置【谨慎使用,参见SpringBoot 2.4.0发布文档】
Spring profile是一种条件化的配置,在运行时,Spring根据哪些profile处于激活状态,可以使用或忽略不同的bean、配置类和配置属性。
⒈,定义方式
1.基于约定创建另外一个配置文件
文件名称要遵守如下约定: application-{profile名称}.yml or application-{profile名称}.properties,然后,我们就可以在文件中声明适用于该profile的配置属性了。
application-prod.yml
spring:
datasource:
url: jdbc:mysql://localhost/coreqi
username: fanqi
password: coreqi
logging:
level:
cn.coreqi: WARN
2.将特定profile的属性和非profile的属性都放到application.yml中【仅适用于YAML配置】
将特定profile的属性和非profile的属性都放到application.yml中,它们之间使用3个中划线进行分割,并且使用spring.profiles属性来命名profile。
logging:
level:
cn.coreqi: DEBUG #没有指定spring.profiles则这些属性是所有profile通用的
---
spring:
profiles: prod #指定了spirng.profiles则这些属性仅属于当前profile
datasource:
url: jdbc:mysql://localhost/coreqi
username: fanqi
password: coreqi
logging:
level:
cn.coreqi: WARN
⒉激活profile
1,在配置文件中激活【开发中常用】
spring:
profiles:
active: #可以激活一个,也可以激活多个
- prod
- audit
- ha
2,通过环境变量激活【生产环境中较常用】
export SPRING_PROFILES_ACTIVE=prod,audit,ha
3,如果以jar或war部署在servlet容器中,可以以命令行参数的形式设置激活的profile
java -jar coreqi.jar --spring.profiles.active=prod,audit,ha
*如果我们将Spring应用部署在Cloud Foundry中,将会自动激活一个名为cloud的profile。如果生产环境是Cloud Foundry,那么可以将生产环境相关的属性放到cloud profile下。
⒊通过profile条件化的创建bean
默认情况下,无论哪个profile处于激活状态,Java配置类中所声明的Bean都将被创建。
通过@Profile注解,可以将某些Bean声明为 仅在特定的profile为激活的状态下才会被创建。
@Bean @Profile("dev") //在dev模式下启动 public CommandLineRunner dataLoader(){ ... } @Bean @Profile({"dev","qa"}) //在dev or qa模式下启动 public CommandLineRunner dataLoader(){ ... } @Bean @Profile("!prod") //在非prod模式下启动 public CommandLineRunner dataLoader(){ ... }
@Profile注解,同时可以使用到配置类上。
@Configuration @Profile({"!prod","!qa"}) public class DevConfig { ... }
作者:奇
出处:https://www.cnblogs.com/fanqisoft/p/14048773.html
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-11-27 TypeScript 高级类型