properties-默认

SOFABoot 框架是基于 Spring Boot 的中间件解决方案,其读取配置文件的方法与 Spring Boot 的逻辑相同,SOFABoot 通过 application.properties 文件实现全局配置。

properties 配置类型

application.properties 中的键值对 key-value 主要分为以下两类:

  • 系统配置:指 key 值是由 SOFABoot 框架指定,并能影响框架运行的配置。可在 properties-系统 中查看所有系统配置项。

  • 自定义配置:指 key 值是由用户指定,被用户程序代码使用的自定义配置,这类配置不会影响 SOFABoot 框架,具体含义与用途完全由用户决定。

properties 默认配置

  • properties 文件路径resources/config/application.properties

    properties 文件存放路径的要求为:

    • 在标准 Maven 工程里,配置文件必须存放于上述路径,以确保应用会将这个文件打包到最终的 JAR 或 War 包中。

    • 在 IDE 中运行时,也需要保证文件能被正确加载到 classpath 中。

  • properties 主要默认参数

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

默认参数说明

在默认的 application.properties 中,主要包含以下 3 个参数。

  • spring.application.name

    • 不可被删除。

    • 应用名字符仅允许包含 a~z 小写字母和 “-”,不允许包含任何其他符号。

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

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

    • INFO:默认值,表示基础信息日志。

    • WARN:表示警告日志。

    • DEBUG:表示调试日志。

  • logging.path=./logs 用于指定 SOFABoot 框架以及各个中间件的日志输出目录。

    • 默认为 ./logs,且不建议修改此值。

    • 当在本地运行时,日志会输出到工程的根目录的 logs 目录下。

    • 当在 Linux/OS X 下运行时,技术栈会切换到 admin 用户运行程序,同时日志文件会输出到 /home/admin/logs 目录下。

动态修改 properties 配置值

  • application.properties:支持所有配置的设置,但却无法动态指定,文件中的 key-value 一旦硬编码就无法改变。

  • 可以通过 java -D 动态设置参数:对于和工作空间相关的配置等需要动态设置的参数, SOFABoot 支持用 -D 参数来动态设置值。该配置方式有下述优势:

    • 可以实现动态调整。

    • 有更高的优先级:当 application.properties 中的 key 和 -D 参数的 key 冲突时,-D 参数的值生效。

    • 通过 -D 的动态性来覆盖或者修正硬编码的配置,可实现灵活部署。

  • 配置示例如下:

    java -Dparam1=value2 -Dparam2=value2
说明

properties 配置文件的优先级,可以参考 Spring Boot Reference Guide 中的 Externalized Configuration

相关阅读

若您需要在不同工作空间下(如开发、测试、预发布、生产工作空间)提供不同的配置,可参考 技术栈使用指南