应用元信息 AppInfo

Shoulder 提供了获取应用元信息的统一门面:org.shoulder.core.context.AppInfo

取应用基本信息示例代码
    // 应用id:默认使用 spring.application.name
    String appId = AppInfo.appId();
    // 应用版本号:默认使用 v1
    String version = AppInfo.version();
    // 应用示例id:默认为 0
    String instanceId = AppInfo.instanceId();
    // 运行环境,如 dev、test、prod
    String env = AppInfo.env();

借助 Spring-Boot,您可以在 application.xml / yml 中配置他们,应用启动时,Shoulder 将自动从 application.properties 中获取这些配置项。

扩展:Shoulder 的理论指南-基础软件管理规范 中讲述了应用相关的概念和定义。

统一设置应用元信息不仅有利于降低代码冗余度,便于扩展,还能体现您架构设计的专业性。

更多运行相关元信息配置

Shoulder 还支持您在配置文件中配置以下信息,可通过统一的配置之来调节字符、多语言、日期等处理流程。

  • 全局默认字符集(如 UTF-8

  • 全局默认语言/地区

  • 全局默认时区

  • 全局默认日期格式

此外,您还可以配置以下信息轻松切换应用状态

  • 当前运行环境

  • 当前所在机房标

  • 集群模式

  • 运行模式

您可以根据这些元信息,在您的系统实现更多的功能,以下为举例:

  • 自适应环境:开发环境日志更详细

  • 自适应机房:只有在特定地区/机房部署才允许使用人脸识别功能

  • 激活不同类装配:根据配置自动切换集群/单机模式

  • 自定义扩展:根据当前流量,自动切换降级 “高性能模式” 或 “全功能模式”

单机部署、集群部署这两种部署方式在一些技术的是现实上难免有许多差异,Shoulder 内置的各能力如 全局锁 几乎都提供了对应的集群模式的方案,您尽管使用对应接口,无需担忧从单机切换到集群模式需要更换技术框架。

应用元信息配置总览

即使不配置您依旧可以自由使用没有任何限制

属性名 说明 格式要求 举例 配置路径 是否必填 默认值

appId

应用唯一标识

字母+下划线

gateway、usercenter、ordercenter

shoulder.application.id

N

1. 尝试取 spring.application.name,若不为空则使用该配置内容。 2. 使用 "unknown"

errorCodePrefix

应用对应错误码

字符串,16进制数字,范围 0-999

0x00a

shoulder.application.errorCodePrefix

N

0x0000

version

版本号

字母+数字+点+中/下划线

v1

shoulder.application.version

N

1. 尝试取 application.version,若不为空则使用该配置内容。 2. 使用 "v1"

dateTimeFormat

全局默认日期时间格式

日期格式

yyyy-MM-dd’T’HH:mm:ss.SSS Z

shoulder.application.dateTimeFormat

N

yyyy-MM-dd’T’HH:mm:ss.SSS Z

charset

全局默认字符编码集

charset

UTF-8、GBK

shoulder.application.charset

N

UTF-8

cluster

是否以集群默认运行

boolean

true/false

shoulder.application.cluster

N

false

defaultLocale

默认语言地区

Locale

zh_CN

shoulder.application.defaultLocale

N

从系统中取

timeZone

默认时区

TimeZone

GMT+8

shoulder.application.timeZone

N

从系统中取

思考

为什么应用配置以 shoulder.application 开头,而不是 spring.application 开头?

扩展:自定义 instanceId

若您引入了 spring-boot-actuator, Shoulder 会自动提供 instanceId EndPoint 并暴露您的 instanceId

Shoulder 为了减少单实例应用的配置,默认将instanceId设置为0,如同以下配置:

YAML
shoulder:
  instance:
    type: fixed
    id: 0
若您希望自定义 instanceIdinstanceId 按规则生成,请根据示例配置修改。