configuration-guide.md 5.0 KB

SMF Core 配置指南

概述

本文档详细说明SMF Core系统的配置文件结构、配置项说明以及环境变量配置方法,帮助管理员正确配置系统。

配置文件结构

SMF Core使用Spring Boot的标准配置文件机制,主要配置文件位于src/main/resources/目录下:

resources/
├── application.yml          # 主配置文件
├── application-dev.yml      # 开发环境配置
├── application-prod.yml     # 生产环境配置
├── smfclient.json           # 客户端配置
├── smfcore.json             # 核心系统配置
└── messages_*.properties    # 多语言配置文件

核心配置文件详解

1. application.yml

主配置文件,包含以下核心配置项:

server:
  port: 8080                  # 服务端口
  servlet:
    context-path: /smf-core   # 上下文路径

spring:
  application:
    name: smf-core            # 应用名称
  profiles:
    active: dev               # 激活的环境配置
  datasource:
    url: jdbc:mysql://localhost:3306/smf_core?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver
  data:
    mongodb:
      uri: mongodb://localhost:27017/smf_core

# Redis配置
redis:
  host: localhost
  port: 6379
  database: 0

# SMF自定义配置
smf:
  config-path: /opt/smf/config # 外部配置文件路径
  log-level: INFO              # 日志级别

2. smfcore.json

系统核心配置文件,包含业务逻辑相关配置:

{
  "system": {
    "language": "zh-CN",          // 默认语言
    "dateFormat": "yyyy-MM-dd",   // 日期格式
    "timeFormat": "HH:mm:ss"      // 时间格式
  },
  "equipment": {
    "maxConnection": 10,           // 最大设备连接数
    "connectionTimeout": 30000     // 连接超时时间(毫秒)
  },
  "storage": {
    "autoAllocate": true,          // 是否自动分配库位
    "reserveRatio": 0.1            // 保留库位比例
  }
}

环境变量配置

以下环境变量可用于覆盖配置文件中的设置:

  • SMF_SERVER_PORT: 覆盖server.port配置
  • SMF_DB_URL: 覆盖数据库连接URL
  • SMF_DB_USERNAME: 覆盖数据库用户名
  • SMF_DB_PASSWORD: 覆盖数据库密码
  • SMF_MONGODB_URI: 覆盖MongoDB连接URI
  • SMF_REDIS_HOST: 覆盖Redis主机地址
  • SMF_LOG_LEVEL: 覆盖日志级别

外部配置文件

系统支持加载外部配置文件,默认读取路径为:

  1. /opt/smf/config/ (Linux)
  2. C:\Program Files\smf\config\ (Windows)

外部配置文件优先级高于内置配置文件,可用于生产环境的灵活配置。

多语言配置

系统支持多语言,语言配置文件命名格式为messages_语言代码.properties

  • messages_zh-CN.properties: 简体中文
  • messages_zh-TC.properties: 繁体中文
  • messages_en.properties: 英语
  • messages_fr.properties: 法语
  • messages_de.properties: 德语

设备连接配置

1. AGV配置

在smfcore.json中配置AGV连接参数:

{
  "agv": {
    "host": "192.168.1.100",
    "port": 8000,
    "retryCount": 3,
    "retryInterval": 5000
  }
}

2. 条码扫描器配置

{
  "barcode": {
    "timeout": 10000,
    "maxRetry": 3
  }
}

系统参数配置

1. 入库规则配置

{
  "inbound": {
    "validateSerialNumber": true,    // 验证序列号
    "autoAssignLocation": true,      // 自动分配库位
    "checkExpirationDate": true      // 检查过期日期
  }
}

2. 出库规则配置

{
  "outbound": {
    "strategy": "FIFO",               // 出库策略: FIFO, LIFO, FIFO_RI_DID
    "validateMaterial": true,         // 验证物料信息
    "notifyExternal": true            // 通知外部系统
  }
}

安全配置

1. 接口安全配置

# application.yml
security:
  basic:
    enabled: false
  ignored:
    - /swagger-ui/**
    - /webjars/**
    - /v2/api-docs
    - /swagger-resources/**

2. JWT配置

jwt:
  header: Authorization
  secret: smf_core_secret_key
  expiration: 3600000  # 1小时
  tokenHead: Bearer

日志配置

系统使用log4j2进行日志管理,配置文件为log4j2-spring.xml

主要配置项包括:

  • 日志级别
  • 输出格式
  • 日志文件路径
  • 日志滚动策略

配置热加载

系统支持配置文件热加载功能,修改配置文件后无需重启即可生效。

热加载条件:

  1. 修改的是外部配置文件
  2. 配置文件位于监控目录下
  3. 通过JMX触发刷新操作

配置验证

启动时系统会自动验证配置文件的有效性:

  1. 数据库连接测试
  2. 必要参数检查
  3. 配置值范围验证

若配置有误,系统会在日志中输出详细错误信息。

最佳实践

  1. 开发环境使用application-dev.yml
  2. 生产环境使用application-prod.yml并配合环境变量
  3. 敏感信息(如数据库密码)优先使用环境变量配置
  4. 定期备份配置文件
  5. 配置变更做好记录