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 配置优先级
配置的应用优先级(从高到低):
- JVM参数
- 环境变量
- 配置文件
8. 自定义配置
要创建自定义配置项,您可以:
- 在
smfcore.json的适当位置添加自定义部分 - 使用Spring的
@ConfigurationProperties注解绑定到Java类
示例:
{
"custom": {
"myFeature": {
"enabled": true,
"settings": {
"param1": "value1",
"param2": 42
}
}
}
}
最后更新时间:2024年