SpringBoot 基础特性

自定义Banner

SpringBoot 可以通过修改配置文件定义自己的启动Banner

默认SpringBoot会在 /resources/Banner.txt 中找启动Banner

也可以通过修改配置文件设置Banner:

# 修改Banner文件
spring.banner.location=classpath:/resources/aaa.txt

# 开启或关闭Banner功能
spring.main.banner-mode=CONSOLE/OFF/LOG

可到此处生成Banner字:https://www.bootschool.net/ascii

 

 

Profiles 开发环境定义

SpringBoot支持在不同的开发环境下激活不同的情况,如一些对象,Bean可以定义在某些开发环境下开启,某些环境下关闭,也可以设置在任何环境下都开启等功能,形成一种环境隔离能力,能过切换不同的环境,就能快速切换运行条件。

注意:SpringBoot 默认提供了以文件为单位的环境配置,如 application-dev.yaml 这种文件,对于spring.profiles.active和default是不生效的

标识环境

标识环境指的是我们需要在程序中指定各方面的对像或配置设置为特定的环境定义,以备后面我们作为环境分组进行切换。

  • 任何@Component, @Configuration 或 @ConfigurationProperties 可以使用 @Profile 标记,来指定何时被加载
    • 在代码中使用 @Profile 注解来定义该类、方法、变量归属什么环境
    • 比如 @Profile("test") 则表示标注的代码只会在 test 环境下生效
    • 比如 @Profile({"test","dev"}) 则表示标注的代码只会在 test 和 dev 环境下生效
    • 配置环境中使用 spring.profiles.active=test,dev 进行设定当前程序运行环境
    • 也可以使用运行时增加命令行 --spring.profiles.active=test,dev 来设定运行的环境

关于 @Profile 标记的几个情况:

  • 设置 @Profile 可以设置为单个环境,也可以设置多个环境
  • 不设置 @Profile 的类、方法、变量,激活何环境都生效
  • @Profile 的默认环境是 "default",当类、方法、变量设置为 @Profile("default") 时,激活环境 default 时,或不指定环境时能生效
  • 类、方法、变量设置为 @Profile("default") 时,激活非 default 环境时不生效
  • 可在配置中指定默认的环境 spring.profiles.default=test 时,则 test 将成为默认环境

总结:如果想在任何时候都生效,则不要加入 @Profile 注解,设置了 @Profile("default") 注解的,只能激活 default 或不定义时才能生效。

 

环境包含

对于希望在任何环境下,也要把主要的环境包含在内时,我们可以使用环境包含,比如一些必要的包,设置为一个必要的环境,在不管test还是dev还是prod环境下,它们都需要被引入,可以使用环境包含。

使用 spring.profiles.include=sql,xxx,abc,则这三个环境,不管我当前激活的是那个环境,这三个环境都会被引入

生效的环境 = 激活的环境/默认环境 + 包含的环境

 

环境分组

可以设置为一个环境的组别,当激活时,可以连带一个组别的所有环境都激活

具体配置为

spring.profiles.group.xxx=dev,test 

# 定义一个叫 xxx 的环境组,组里有 dev 和 test 环境

spring.profiles.active=xxx

激活一个组的环境,效果将为把xxx组里的dev和test都生效

 

Profile 配置文件

application.properties 是SpringBoot 的主配置文件,但是SpringBoot允许创建子配置文件,通过规范,我们可以创建以下的子配置文件以用在其它环境上

  • application-dev.properties > 说明我们在配置坏境上创建了一个叫 dev 的环境,当我们使用 spring.profiles.active=dev 时,该配置环境将会生效
  • application-xxx.properties > 创建一个为xxx的环境
  • 命名规则为 application-{profile标识}.propertyies
  • 分支配置文件中不允许使用 spring.profiles.active 这些选项

分支配置文件的优先级会比 application.properties 优先级高

 

外部配置文件规则

对于配置文件来说,application.properties 文件都是默认放在包中的,那如果我们需要在运行时调用配置文件,我们需要在包外面创建配置文件来扩展配置

其配置文件的优先级如下:优先级 从低到高,红色的是我们平时比较常用的

  • 通过 SpringApplication.setDefaultProperties 指定的参数,即在容器上下文 applicationContext中设置 setProperties()
  • 在配置类中(即 @Configuration)加入 @PropertySource() 标记指定配置文件,如 @PropertySource("classpath:aaa.properties")。
    • 此功能与配置文件中配置 spring.config.import=aaa.properties 相同
  • 配置文件,如包中的 application.properties 文件
  • RandomValuePropertySource 支持的 random.* 配置,如 @Value("${random.ini}")
  • OS 操作系统的环境变量
  • Java 系统属性 (System.getProperties())
  • JNDI 属性 (java:comp/env)
  • ServletContext 初始化参数
  • ServletConfig 初始化参数
  • SPRING_APPLICATION_JSON 属性
  • 运行提供的命令行参数
  • 测试属性 @SpringBootTest
  • 测试类 @TestPropertySource注解
  • Devtools 设置的全属性

 

对于配置文件而言,在包内和在包外的优先级也不一样:从低到高,对于文件来说 properties 比 yaml 优先级高

  • 1.jar包内的 application.properties
  • 2.jar包内的 application-xxx.properties
  • 3.jar包内的 config/application.properties
  • 4.jar包内的 config/application-xxx.properties
  • 5.jar包外的 application.properties
  • 6.jar包外的 application-xxx.properties
  • 7.jar包外的 config/application.properties
  • 8.jar包外的 config/application-xxx.properties
  • 9.jar包外的 config/xxx/application.properties
  • 10.jar包外的 config/xxx/application-xxx.properties

优先级排序:命令行 > 包外 config/xxx/ > 包外 config > 包外 > 包内 config > 包内,profile > 非 prefile

 

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

THE END
分享
二维码
打赏
海报
SpringBoot 基础特性
自定义Banner SpringBoot 可以通过修改配置文件定义自己的启动Banner 默认SpringBoot会在 /resources/Banner.txt 中找启动Banner 也可以通过修改配置文件设置Banner: # 修改Banner文件 sprin……
<<上一篇
下一篇>>