配置与环境变量
配置层次
ecshopx-java 采用 Spring Boot 标准配置机制:
| 来源 | 用途 |
|---|---|
application.properties | 模块/默认配置(随 jar 打包) |
application-local.properties | 本地开发样例(ecshopx-bootstrap/src/main/resources/) |
环境变量 / APP_ARGS | 部署覆盖(Docker、docker run -e) |
约定:
- 业务代码通过
@Value、@ConfigurationProperties或Environment读取已绑定好的属性,不要在业务类中散落System.getenv(); - 生产密钥 必须 由运维注入,禁止 将真实密码提交进 Git;
- Docker 镜像通过
APP_ARGS以 Spring Boot CLI 形式覆盖属性(见 本地 / Docker 部署)。
示例(docker run):
-e APP_ARGS="--spring.datasource.url=jdbc:mysql://<host>:3306/ecshopx \
--spring.datasource.username=ecshopx \
--spring.datasource.password=*** \
--spring.data.redis.host=<host> \
--spring.data.redis.password=*** \
--xxl.job.admin.addresses=http://<host>:9080/xxl-job-admin \
--xxl.job.accessToken=***"本地 IDE 运行:激活 local profile 或直接使用 application-local.properties 中的默认值。
spring.datasource.*
MySQL 主库连接,定义于 application-local.properties:
| 属性 | 说明 | 本地样例 |
|---|---|---|
spring.datasource.url | JDBC URL,含字符集与时区 | jdbc:mysql://127.0.0.1:3306/ecshopx?...&serverTimezone=Asia/Shanghai |
spring.datasource.username | 数据库用户 | ecshopx |
spring.datasource.password | 数据库密码 | 本地占位,生产由环境注入 |
spring.datasource.driver-class-name | 驱动类 | com.mysql.cj.jdbc.Driver |
Flyway 迁移开关与路径:spring.flyway.*(本地常设 enabled=false,由运维策略决定)。
spring.data.redis.*
默认 Redis 连接(主机、端口、密码、逻辑库索引):
| 属性 | 说明 | 本地样例 |
|---|---|---|
spring.data.redis.host | Redis 主机 | 127.0.0.1 |
spring.data.redis.port | 端口 | 6379 |
spring.data.redis.password | 密码 | redispassword(compose 默认) |
spring.data.redis.database | 默认逻辑库索引 | 0 |
多逻辑库(companys / prism / datacube / deposit 等)由 MultiRedisConfig 与 ecshopx.redis.* 扩展,见 应用缓存。
补充 Lettuce 超时与连接校验:
ecshopx.redis.lettuce.command-timeoutecshopx.redis.lettuce.connect-timeoutecshopx.redis.lettuce.validate-connection
JWT_SECRET
运营端 / H5 / 商户入驻 JWT 签名密钥。
| 属性 | 说明 |
|---|---|
JWT_SECRET | 32 字节密钥的 标准 Base64(openssl rand -base64 32) |
JWT_TTL | Access token 有效期(秒),默认 7200 |
JWT_REFRESH_TTL | 刷新窗口(分钟) |
ecshopx.h5.jwt.secret-base64 | 引用 ${JWT_SECRET} |
ecshopx.merchant.wxapp.jwt.secret-base64 | 商户 API 共用或独立覆盖 |
生产必须 更换仓库内样例值;缺失或格式错误会导致 JWT 签发/校验失败。
ecshopx.storage.driver
对象存储驱动,通过 ecshopx.storage.driver 配置。
| 值 | 含义 |
|---|---|
local | 本地磁盘 |
oss | 阿里云 OSS |
qiniu | 七牛 |
aws | AWS S3 兼容 |
cosv5 | 腾讯云 COS |
本地样例:ecshopx.storage.driver=oss,并配置对应 ecshopx.storage.oss.* / qiniu.* / aws.* / cos.* 子项。导入导出专用桶见 ecshopx.storage.import-file.*。
运维细节见 云存储(后续章节)。
xxl.job.*
XXL-JOB 执行器与 Admin 通信(定时任务统一经 XXL-JOB 注册)。
| 属性 | 说明 | 本地样例 |
|---|---|---|
xxl.job.admin.addresses | Admin 根地址 | http://127.0.0.1:9080/xxl-job-admin |
xxl.job.accessToken | Admin 与 Executor 鉴权令牌 | ecshopx-cron-dev |
xxl.job.executor.appname | 执行器 AppName | ecshopx-executor |
xxl.job.executor.port | 执行器端口 | 19999 |
xxl.job.executor.logpath | 执行日志目录 | logs/xxl-job |
docker-compose 中 Admin 可能映射为 8080 或 9080,以当前 docker-compose.yml 与 异步与定时任务 为准;accessToken 须与 Admin 配置一致。
读取方式小结
- 本地:编辑
application-local.properties后启动EcshopxApplication。 - 容器:
APP_ARGS或环境变量(Spring Boot relaxed binding,如SPRING_DATASOURCE_URL)。 - 禁止:在业务代码中硬编码环境相关 URL、密码;敏感项走配置注入。
相关章节
- 本地 / Docker 部署 — 快速启动与 compose
- 应用缓存 — 多 Redis 逻辑库
- 异步与定时任务 — XXL-JOB 部署
