全部产品
云市场

全局配置

更新时间:2019-09-18 19:08:58

什么是全局配置?

全局配置指能被 SOFABoot 框架获取并影响应用运行逻辑的 key-value 值,主要分为以下两类:

  • 系统配置:指 key 值是由 SOFABoot 框架指定,并能影响框架运行的配置。可在 SOFABoot 系统配置参数 中查看所有系统配置项。
  • 自定义配置:指 key 值是由用户指定,被用户程序代码使用的自定义配置,这类配置不会影响 SOFABoot 框架,具体含义与用途完全由用户决定。

SOFABoot 框架是基于 Spring Boot 的中间件解决方案,其读取配置文件的方法与 Spring Boot 的逻辑相同,下文主要介绍默认的全局配置文件。

全局配置文件

在标准 Maven 工程里,全局配置文件必须存放于以下路径,以确保应用会将这个文件打包到最终的 JAR 或 War 包中,同时在 IDE 中运行时也需要保证文件能被正确加载到 classpath 中: resources/config/application.properties

SOFABoot 工程中默认加载的全局配置文件 application.properties 结构如下:

  1. spring.application.name={APPNAME}
  2. logging.level.com.alipay.sofa=INFO
  3. logging.path=./logs

默认参数说明

在默认的全局配置文件中,主要包含以下 3 个参数。

  • spring.application.name
    用于指定应用名称。SOFABoot 框架以及一些中间件会以此配置值作为应用的名称,该配置无默认值。应用名称必须保持 唯一性,在 RPC 调用、消息投递时,框架会在框架日志中打印应用名称,也会在上下文中传递。一旦重名,将会导致监控和服务治理时无法区分不同应用的日志。此外,应用代码也可以利用这个值来做一些跟应用名相关的业务逻辑判断或者标识区分。

  • logging.level.com.alipay.sofa=INFO
    用于设定当前应用的日志级别,其值可为:

    • INFO:默认值,表示基础信息日志
    • WARN:表示警告日志
    • DEBUG:表示调试日志
  • logging.path=./logs
    用于指定 SOFABoot 框架以及各个中间件的日志输出目录。默认为 ./logs不建议修改此值。当在本地运行时日志会输出到工程的根目录的 logs 目录下;当在 Linux/OS X 下,技术栈会切换到 admin 用户运行程序,同时日志文件会输出到 /home/admin/logs 目录下。

标准 JVM -D 参数

虽然 application.properties 文件已支持所有配置的设置,但却无法动态指定,文件中的 key-value 一旦硬编码就无法改变。但由于有些配置是工作空间相关的,所以 SOFABoot 支持用 -D 参数来指定全局配置,您可以通过运行如下命令动态设置参数:

  1. java -Dparam1=value2 -Dparam2=value2

application.properties 文件相比,-D 指定配置的方式除了具有动态调整的优势外,也有更高的优先级,当 application.properties 中的 key 和 -D 参数的 key 冲突时,-D 参数的值生效。这么设计的目的也是为了通过 -D 的动态性来覆盖或者修正硬编码的配置,以实现灵活部署。

参考文档:Spring Boot 中获取配置的优先级 可以参考这里

相关阅读

若您需要在不同工作空间下(如开发、测试、预发布、生产工作空间)提供不同的配置,可参考 工程配置解决方案