1. 项目背景与需求解析
在JEECG Boot 3.5.0版本的实际部署中,我们经常需要根据企业级开发规范调整API接口的基础路径。不同于简单的应用名称修改,真正的接口路径定制涉及Spring Boot配置、前端路由适配、网关转发规则等多个技术层面的协同工作。最近在金融行业项目中,我们就遇到了需要将默认的/jeecg-boot路径改为/fin-api/v1的合规性需求,这促使我对JEECG Boot的路径定制方案进行了系统梳理。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心配置方案详解
2.1 后端服务路径配置
修改application-dev.yml(生产环境对应application-prod.yml)是基础操作,但需要注意JEECG Boot的特殊处理逻辑:
yaml复制server:
servlet:
context-path: /fin-api/v1
port: 8080
jeecg:
path:
# 特殊处理Swagger文档路径
swagger: /fin-api/v1/doc.html
# 静态资源路径映射
static: /fin-api/v1/static
关键点:JEECG Boot对Swagger和静态资源路径有独立配置项,必须同步修改避免404错误
2.2 前端Vue2适配方案
对于仍在使用Vue2架构的项目,需要修改以下关键位置:
vue.config.js中的代理配置:
javascript复制devServer: {
proxy: {
'/fin-api/v1': {
target: 'http://localhost:8080',
changeOrigin: true,
pathRewrite: {
'^/fin-api/v1': '/fin-api/v1'
}
}
}
}
src/api/request.js中的baseURL:
javascript复制const service = axios.create({
baseURL: process.env.VUE_APP_API_BASE_URL || '/fin-api/v1',
timeout: 30000
})
- 路由文件
src/router/index.js中的动态路由加载逻辑需要同步调整接口路径
3. 深度适配与问题排查
3.1 达梦数据库特殊处理
在适配达梦数据库时,如果遇到路径相关报错,需要检查:
- 数据库连接池配置中的validationQuery是否包含正确路径
- 达梦驱动对URL路径的特殊字符处理规则
- 建议在JDBC URL中显式指定schema:
yaml复制url: jdbc:dm://127.0.0.1:5236/SYSDBA?currentSchema=JEECG_BOOT
3.2 外部链接菜单配置
当使用iframe嵌入外部系统时,路径配置需要特殊处理:
javascript复制{
path: '/fin-api/v1/ext/:url',
component: Layout,
meta: { title: '外部链接' },
hidden: true,
children: [
{
path: '*',
component: () => import('@/views/iframe/IframePageView')
}
]
}
4. 企业级部署最佳实践
4.1 Nginx反向代理配置
nginx复制location /fin-api/v1 {
proxy_pass http://127.0.0.1:8080/fin-api/v1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 文件上传大小限制
client_max_body_size 100m;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
4.2 多环境配置管理
建议采用Spring Profile机制实现环境隔离:
- 创建
application-path.yml作为路径专用配置 - 各环境通过
spring.profiles.include引入:
yaml复制# application-dev.yml
spring:
profiles:
include: path,dev
5. 安全加固措施
5.1 接口路径混淆方案
为防止接口被扫描,可在基础路径后添加随机字符串:
yaml复制server:
servlet:
context-path: /fin-api-${random.uuid}/v1
5.2 数据库加密集成
JEECG Boot的数据库加密模块需要特殊路径配置:
- 在
jeecg_database.yml中指定加密密钥路径 - 修改
DbEncryptInterceptor的路径匹配规则
6. 性能优化建议
- 静态资源CDN化配置:
yaml复制jeecg:
path:
cdn: https://cdn.yourdomain.com/fin-api/v1/static
- 接口路径缓存策略:
java复制@Configuration
public class PathCacheConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/fin-api/v1/static/**")
.addResourceLocations("classpath:/static/")
.setCacheControl(CacheControl.maxAge(365, TimeUnit.DAYS));
}
}
7. 版本升级注意事项
从旧版本迁移时需特别注意:
- 路径修改后需要重建Redis缓存
- 定时任务中的硬编码路径需要更新
- 已生成的报表模板需要检查路径引用
8. 监控与日志处理
- 在logback-spring.xml中增加路径过滤:
xml复制<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>return message.contains("/fin-api/v1");</expression>
</evaluator>
</filter>
- Prometheus监控指标路径适配:
yaml复制management:
endpoints:
web:
base-path: /fin-api/v1/actuator
9. 微服务架构适配
在Spring Cloud方案中需要额外配置:
- 网关路由规则:
yaml复制spring:
cloud:
gateway:
routes:
- id: jeecg-service
uri: lb://jeecg-service
predicates:
- Path=/fin-api/v1/**
- FeignClient路径指定:
java复制@FeignClient(name = "jeecg-service", path = "/fin-api/v1")
public interface SystemClient {}
10. 企业级CI/CD集成
在流水线中需要处理的路径相关环节:
- Docker镜像构建参数:
dockerfile复制ENV CONTEXT_PATH=/fin-api/v1
EXPOSE 8080
CMD ["java","-Dserver.servlet.context-path=${CONTEXT_PATH}","-jar","app.jar"]
- Jenkinsfile中的路径替换脚本:
groovy复制sh '''
sed -i "s|/jeecg-boot|${CONTEXT_PATH}|g" src/main/resources/application*.yml
'''
