【SpringBoot】Spring Boot 多Profile环境以及自动配置

本文介绍了Spring Boot如何实现多Profile环境配置,包括通过yml文档、命令行参数和虚拟机参数激活指定Profile。同时,详细阐述了配置文件的加载位置,如@Value、@ConfigurationProperties和Environment接口的使用。接着,深入探讨了Spring Boot自动配置的原理,包括@EnableAutoConfiguration的作用和自动配置类的工作机制,并提到了通过debug模式查看生效的自动配置类报告。

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

一、多Profile文件

     Profile是Spring对不同环境提供不同配置功能的支持,可以通过激活、 指定参数等方式快速切换环境。
     我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 默认使用application.properties的配置
  •  yml支持多文档块方式
server:
  port: 8081
spring:
  profiles:
    active: prod

---
server:
  port: 8083
spring:
  profiles: dev


---

server:
  port: 8084
spring:
  profiles: prod  #指定属于哪个环境
  • 激活指定profile

  1. 在配置文件中指定 spring.profiles.active=dev

  2. 命令行:
​ java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;

​ 可以直接在测试的时候,配置传入命令行参数
  1. 虚拟机参数;
​ -Dspring.profiles.active=dev

二、配置文件加载位置   

Spring Boot获取文件总的来说有三种方式

  • @Value注解
  • @ConfigurationProperties注解
  • Environment接口

这三种注解可以配合着@PropertySource来使用,@PropertySource主要是用来指定具体的配置文件。

源码地址:透传地址

相关文章

  1. Spring Boot读取配置文件的几种方式

三、自动配置原理                                                                                                                 Spring Boot 的功能官网文档

(1)配置文件能配置的属性参照spring boot 2.2.5官网

       可以在application.properties文件内部application.yml,文件内部或命令行开关中指定各种属性。本附录提供了常见的Spring Boot属性列表以及对使用它们的基础类的引用。

  • Spring Boot提供了各种具有高级值格式的转换机制,请务必查看属性转换部分

 (2)自动配置的原理:

  1.  Spring Boot启动的时候加载主配置类,开启了自动配置功能 @SpringBootApplication下的@EnableAutoConfiguration
  2. @EnableAutoConfiguration的作用:   

      利用 AutoConfigurationImportSelector 选择器给容器导入一些组件,具体可以查看源码:selectImports()方法的内容:

  •  获取候选配置
// 获取候选配置 
List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);
  • 扫描所有jar包类路径下的   META-INF/spring.factories
List<String> configurations = SpringFactoriesLoader.loadFactoryNames(
                                   this.getSpringFactoriesLoaderFactoryClass(),
                                   this.getBeanClassLoader());
  •    把扫描到的这些文件的内容包装成properties对象中
  Properties properties = PropertiesLoaderUtils.loadProperties(resource);
  •  从Properties中获取到 EnableAutoConfiguration.class 类(类名)的值,然后把他们添加到容器中。
  •  将类路径下的  META-INF/spring.factories 里面配置的所有 EnableAutoConfiguration的值加入到容器中。
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

试剑江湖。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值