高级特性

Profiles

1、隔离应用程序配置部分,并使其仅在特定环境中可用

2、任何 @Component 或 @Configuration 都可以用 @Profile 标记以限制何时加载

3、默认配置文件 application.yaml,任何时候都会加载

4、指定环境配置文件 application-{env}.yaml

5、激活指定环境

(1)配置文件激活

spring:
  profiles:
    active: 
      - dev
      - hsqldb

(2)命令行激活:java -jar xxx.jar --spring.profiles.active=dev,hsqldb

(3)优先级:配置文件 < 命令行

(4)默认配置与环境配置同时生效,存在同名配置项,以 profile 配置优先

6、叠加激活新的 profile

spring:
  profiles:
    include:
      - dev1
      - dev2

7、Spring Boot 在未指定 Profile 时默认为 default

8、分组

(1)properties

spring.profiles.group.production[0]=proddb
spring.profiles.group.production[1]=prodmq

(2)yaml

spring:
  profiles:
    group:
      production:
        - proddb
        - prodmq

(3)配置文件激活

spring:
  profiles:
    active: production

(4)注解激活(按条件装配)

@Profile("production")

 

外部化配置

1、常用外部配置源:Java properties 文件、YAML 文件、环境变量、命令行参数

2、配置参数优先级:顺序提高(若存在同名配置项,高优先级覆盖低优先级)

(1)默认属性(通过设置 SpringApplication.setDefaultProperties 指定)

(2)在 @Configuration 类上的 @PropertySource 注解。请注意,这样的属性源直到应用上下文被刷新时才会被添加到环境中。这对于配置某些属性来说已经太晚了,比如:logging.* 和 spring.main.*,这些属性在刷新开始前就已经被读取了

(3)配置数据(如 application.properties 文件)

(4)一个 RandomValuePropertySource,它的属性只在 random.*

(5)操作系统环境变量

(6)Java 系统属性,System.getProperties()

(7)来自 java:comp/env 的 JNDI 属性

(8)ServletContext 初始参数

(9)ServletConfig 初始参数

(10)来自 SPRING_APPLICATION_JSON(嵌入环境变量,或系统属性的内联 JSON)的属性

(11)命令行参数

(12)测试上的属性,在 @SpringBootTest 和测试注解上可用,用于测试应用程序的一个特定片断

(13)在测试上的 @TestPropertySource 注解

(14)当 devtools 激活时,$HOME/.config/spring-boot 目录下的 Devtools 全局设置属性

3、配置文件查找位置(优先级顺序提高)

(1)classpath 根路径

(2)classpath 根路径下 config 目录

(3)jar 包当前目录

(4)jar 包当前目录的 config 目录

(5)/config 子目录的直接子目录

4、配置文件加载顺序

(1)当前 jar 包内部的 application.properties 和 application.yml

(2)当前 jar 包内部的 application-{profile}.properties 和 application-{profile}.yml

(3)引用 jar 包外部的application.properties和application.yml

(4)引用 jar 包外部的 application-{profile}.properties 和 application-{profile}.yml

 

自定义 starter

1、starter:只声明依赖,引入 autoconfigure 包

2、autoconfigure 包中配置使用 META-INF/spring.factories 中 EnableAutoConfiguration 的值,使得项目启动加载指定的自动配置类

3、AutoConfiger 自动配置类:@Configuration

(1)绑定配置文件类:@EnableConfigurationProperties

(2)按条件装配

(3)注入组件:@Bean

4、Properties 配置文件类:@ConfigurationProperties

posted @   半条咸鱼  阅读(45)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示