configuration-guide.md 5.5 KB

SMF Core 配置指南

1. 配置文件概述

SMF Core 框架使用多种配置文件管理不同方面的设置。本文档详细介绍了所有配置文件的结构、位置和可用选项,帮助您正确配置和定制框架行为。

2. 配置文件位置

所有配置文件均位于项目的 src/main/resources/ 目录下:

src/main/resources/
├── config/               # 配置子目录
├── log4j2-spring.xml     # 日志配置文件
├── smfclient.json        # SMF客户端配置
└── smfcore.json          # SMF核心配置

3. 核心配置文件 (smfcore.json)

smfcore.json 是框架最核心的配置文件,控制数据库连接、服务设置和全局行为。

3.1 完整配置示例

{
  "database": {
    "mongo": {
      "uri": "mongodb://localhost:27017/smf-core",
      "connections": 10,
      "maxWaitTime": 10000,
      "connectionTimeout": 5000,
      "socketTimeout": 5000,
      "writeConcern": "ACKNOWLEDGED",
      "readPreference": "PRIMARY"
    }
  },
  "service": {
    "port": 8080,
    "contextPath": "/smf-core",
    "threadPool": {
      "coreSize": 10,
      "maxSize": 50,
      "queueCapacity": 100
    }
  },
  "logging": {
    "level": "INFO",
    "file": "./logs/smf-core.log",
    "maxFileSize": "10MB",
    "maxHistory": 10
  },
  "i18n": {
    "defaultLocale": "zh_CN",
    "supportedLocales": ["zh_CN", "zh_TW", "en_US", "de_DE", "fr_FR", "ja_JP"],
    "cacheDuration": 3600
  },
  "security": {
    "enableXssProtection": true,
    "enableCsrfProtection": true,
    "allowedOrigins": ["*"]
  },
  "features": {
    "enableAuditLog": true,
    "enablePerformanceMonitoring": false,
    "enableCaching": true
  }
}

3.2 配置详解

3.2.1 数据库配置

  • uri: MongoDB连接字符串
  • connections: 连接池大小
  • maxWaitTime: 最大等待时间(毫秒)
  • connectionTimeout: 连接超时时间(毫秒)
  • socketTimeout: Socket超时时间(毫秒)
  • writeConcern: 写入策略(ACKNOWLEDGED, W1, W2, JOURNALED等)
  • readPreference: 读取偏好(PRIMARY, PRIMARY_PREFERRED, SECONDARY等)

3.2.2 服务配置

  • port: 服务端口
  • contextPath: 应用上下文路径
  • threadPool: 线程池配置
    • coreSize: 核心线程数
    • maxSize: 最大线程数
    • queueCapacity: 队列容量

3.2.3 日志配置

  • level: 全局日志级别(TRACE, DEBUG, INFO, WARN, ERROR)
  • file: 日志文件路径
  • maxFileSize: 单个日志文件最大大小
  • maxHistory: 保留的日志文件历史数量

3.2.4 国际化配置

  • defaultLocale: 默认语言环境
  • supportedLocales: 支持的语言列表
  • cacheDuration: 资源缓存持续时间(秒)

3.2.5 安全配置

  • enableXssProtection: 是否启用XSS保护
  • enableCsrfProtection: 是否启用CSRF保护
  • allowedOrigins: 允许的跨域来源

3.2.6 功能开关

  • enableAuditLog: 是否启用审计日志
  • enablePerformanceMonitoring: 是否启用性能监控
  • enableCaching: 是否启用缓存

4. 日志配置文件 (log4j2-spring.xml)

4.1 基本配置示例

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
  <Properties>
    <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Property>
    <Property name="LOG_FILE">./logs/smf-core.log</Property>
  </Properties>

  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="${LOG_PATTERN}"/>
    </Console>

    <RollingFile name="File" fileName="${LOG_FILE}" 
                 filePattern="./logs/smf-core-%d{yyyy-MM-dd}-%i.log.gz">
      <PatternLayout pattern="${LOG_PATTERN}"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="10 MB"/>
        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
      </Policies>
      <DefaultRolloverStrategy max="10"/>
    </RollingFile>
  </Appenders>

  <Loggers>
    <Root level="INFO">
      <AppenderRef ref="Console"/>
      <AppenderRef ref="File"/>
    </Root>

    <!-- 自定义日志级别 -->
    <Logger name="com.neotel.smfcore" level="DEBUG" additivity="false">
      <AppenderRef ref="Console"/>
      <AppenderRef ref="File"/>
    </Logger>
  </Loggers>
</Configuration>

5. 客户端配置文件 (smfclient.json)

客户端配置文件定义了连接SMF服务时的客户端行为和参数。

{
  "serverUrl": "http://localhost:8080/smf-core",
  "connectTimeout": 5000,
  "readTimeout": 10000,
  "retryCount": 3,
  "retryInterval": 1000,
  "auth": {
    "enabled": false,
    "token": ""
  },
  "compression": {
    "enabled": true,
    "threshold": 1024
  }
}

6. 环境变量配置

SMF Core 支持通过环境变量覆盖配置文件中的设置,格式为:

SMF_{配置路径}_{配置项}={值}

例如:

SMF_DATABASE_MONGO_URI=mongodb://user:pass@prod-db:27017/smf-core
SMF_SERVICE_PORT=8081

7. 运行时配置

7.1 通过JVM参数配置

您可以通过JVM参数覆盖配置:

java -jar smf-core.jar --smf.database.mongo.uri=mongodb://localhost:27017/smf-core

7.2 配置优先级

配置的应用优先级(从高到低):

  1. JVM参数
  2. 环境变量
  3. 配置文件

8. 自定义配置

要创建自定义配置项,您可以:

  1. smfcore.json的适当位置添加自定义部分
  2. 使用Spring的@ConfigurationProperties注解绑定到Java类

示例:

{
  "custom": {
    "myFeature": {
      "enabled": true,
      "settings": {
        "param1": "value1",
        "param2": 42
      }
    }
  }
}

最后更新时间:2024年