You need to enable JavaScript to run this app. 不使用Spring Boot,如何为集成Swagger的CDI版Apache Camel添加Swagger UI
优惠活动
大模型
产品
解决方案
定价
更多

不使用Spring Boot,如何为集成Swagger的CDI版Apache Camel添加Swagger UI

纯CDI/Camel环境下Swagger UI落地实现(无Spring Boot依赖)

核心实现完全复用你已经跑通的camel-example-swagger-cdi的嵌入式Jetty容器、Camel Servlet组件能力,不需要加Spring Boot,也不需要拆成两个独立服务,只要把Swagger UI的静态资源挂到现有8080端口上就行,完全不改动你已经调好的/api-doc文档生成逻辑。

第一步:引入匹配版本的Swagger UI静态资源依赖

  • 不需要手动下载Swagger UI源码、也不需要额外部署静态文件服务,直接通过WebJar方式拉取打包好的静态资源到项目依赖里,减少部署步骤
  • 必须对齐版本:选择和你现有Swagger核心库同大版本的Swagger UI包,比如原示例集成的是Swagger 2.0版本的文档生成能力,就选对应2.x大版本的Swagger UI WebJar,避免出现文档解析格式不兼容的问题
  • 核心依赖仅两个:用于静态资源路径定位的webjars核心工具包、用于Swagger UI静态资源的WebJar包,没有传递依赖,不会顺带把Spring相关组件引进来
  • 避坑提示:不用把Swagger UI的压缩包手动拷到webapp目录下,用WebJar的方式把静态资源和代码打在同一个Jar包里,和你原来的部署结构完全兼容,不会多出来零散的静态文件

第二步:复用现有Servlet容器托管静态资源

  • 原示例本身用嵌入式Jetty提供Web服务,所有逻辑都复用现有端口,不新增独立服务、不引入跨域风险
  • 扩展现有路由配置,新增Swagger UI静态资源的路径映射,原有/api-doc的文档生成路由完全不用改
  • 路由配置参考写法,和你原来的RouteBuilder写法风格完全一致:
    // 原有Swagger JSON生成路由保持不变
    from("servlet:/api-doc")
      .to("swagger"); 
    // 新增Swagger UI静态资源路由
    from("servlet:/swagger-ui/*")
      .to("webjars:swagger-ui");
    
  • 如果你不想额外引入Camel的webjars组件,也可以直接在现有Jetty容器配置里,把/webjars/*路径映射到Jetty内置的默认静态资源处理器,直接读取依赖Jar包内的静态文件,逻辑和上面的路由写法完全等价

第三步:配置Swagger UI指向本地文档地址

  • 不需要修改Swagger UI静态包内的默认配置文件,直接利用Swagger UI原生支持的查询参数传入本地文档地址即可
  • 正式访问入口为:http://localhost:8080/swagger-ui/index.html?url=/api-doc
  • 可按需做路径简化:新增一个轻量处理器,拦截裸路径/swagger-ui的请求,直接302跳转到上面带文档参数的访问地址,省得用户输全路径

落地避坑提示

  • 所有资源、文档接口都在同一个端口、同一个上下文路径下,完全不会触发跨域限制,不需要额外配置CORS规则
  • 若新增的/swagger-ui路径和现有业务接口路径冲突,可直接修改静态资源映射路径为任意不冲突的地址(比如/doc-ui/*),整体逻辑不需要调整
  • 不要跨大版本选Swagger UI包,比如拿OpenAPI 3.x版本的UI去解析Swagger 2.0格式的JSON,会出现接口列表加载失败的问题

内容的提问来源于stack exchange,提问作者JaAnTr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.10 00:24:04