jfinal集成knife4j-swagger经过的各种坑,到最后的成功。

本文介绍在JFinal 2.0环境中集成Swagger的过程及遇到的问题。包括jfinal-swagger的不适用性、jfinal-swagger-knife4j的集成细节及其在jfinal-2.0中的适配方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现有环境: jfinal-2.0,jdk 1.8,集成swagger.

一、经过各种折腾,网上搜集,一开始集成jfinal-swagger,该项目位置:jfinal-swagger: jfinal 集成 Swagger 结果发现该项目没人维护不说,不支持返回值说明。

二、后又找到jfinal-swagger-knife4j项目,项目位置:jfinal-swagger-knife4j: JFinal集成Swagger 

该项目实现了jfinal-knife4j的集成,默认使用@ApiRes注解,标注返回参数时,使用的是默认的框架中自定义的实体类,如想自定义返回实体,可使用@ApiResCustom 注解实现。

但该项目为jfinal-4.9,自己的项目中为jfinal-2.0,经过查看该项目源代码,锁定到的jfinal2.0中没有Engine类,经过各种搜索后,发现jfinal作者有一个enjoy项目,该项目和jfinal框架没有任何关系,可在spring中使用,不依赖jfinal框架,而这点正好补足了jfinal-2.0的不足,说到这里可能有读者想说,为什么不直接升级到jfinal-4.9,因为公司的项目是一个很老的项目,如果要该的话,估计会有很多改动,主要是leder不让改,外加各种公司环境的原因,不能改。所以想到的在jfina-2.0基础上外挂enjoy.jar包来解决集成jfinl-swagger-kenife4j这个开源项目。enjoy的项目地址:enjoy.

三、接下来说一下jfina-swagger-knife4j这个开源项目在集成过程中的坑。

有关swagger.properties文件中的问题。

1.basePath这个属性,如您当前的上下文是/  则需要注释掉这个属性,否则当前请求的url会少一位。比如/zrr/user 会变成/rr/user。

2.contextPath这个属性,如您当前的上下文不是空,如加上当前项目的上下文,存在找不到资源文件问题,但是请求css等资源文件的http状态码为200,但是下载下来的文件是空的。解决办法,去掉所有上下文,使用/来作为当前项目上下文。有关这点可能存在疑点,后期进行验证。

3.有关无缘无故的NullpointerException问题,可能为用@ApiModel标记的实体类中存在没有使用@ApiModelProperty注解来标记的字段,则会出现该问题,解决办法:在该字段中使用@ApiModelProperty(hidden=true)即可解决问题。

致辞完成的jfinal-swagger-knife4j的整个集成过程,如有相关疑问,请留言。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值