JAVA SpringMVC老项目集成knife4j

需求: 原有一直使用showdoc工具对内或对外进行接口文档和功能的沟通,上层领导觉得人工进行手写

  1. 浪费很多人工维护时间
  2. 可能会做到接口更改而面对静态文档而更新不及时
  3. showdoc的劣势是不能进行在线调试 需要辅助其他调试工具

但领导只需要类似swagger官方的页面即可。通过调研了解到knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案。

knife4j介绍:

Knife4j的前身是swagger-bootstrap-ui,前身swagger-bootstrap-ui是一个纯swagger-uiui皮肤项目

一开始项目初衷是为了写一个增强版本的swagger的前端ui,但是随着项目的发展,面对越来越多的个性化需求,不得不编写后端Java代码以满足新的需求,在swagger-bootstrap-ui的1.8.5~1.9.6版本之间,采用的是后端Java代码和Ui都混合在一个Jar包里面的方式提供给开发者使用.这种方式虽说对于集成swagger来说很方便,只需要引入jar包即可,但是在微服务架构下显得有些臃肿。

因此,项目正式更名为knife4j,取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍,更名也是希望把她做成一个为Swagger接口文档服务的通用性解决方案,不仅仅只是专注于前端Ui前端.

swagger-bootstrap-ui的所有特性都会集中在knife4j-spring-ui包中,并且后续也会满足开发者更多的个性化需求.

主要的变化是,项目的相关类包路径更换为com.github.xiaoymin.knife4j前缀,开发者使用增强注解时需要替换包路径

后端Java代码和ui包分离为多个模块的jar包,以面对在目前微服务架构下,更加方便的使用增强文档注解(使用SpringCloud微服务项目,只需要在网关层集成UI的jar包即可,因此分离前后端)

此次集成的是SSM的老项目,故中途关于查阅相关资料与测试使用了一些时间,不同与springboot或微服务集成,官网提供了相对完善的资料,此次是基于springMVC进行老版本(2.0.4)的集成工作。

一、

老项目是使用的Gradle构建工具,首先通过仓库查询到knife4j的依赖包,将以下两个包引入

 二、创建配置文件  SwaggerConfig

关键点说明:

  1. .api是为了指定Controller扫描包路径
  2. @ComponentScan 目的是为了使用knife4j增强功能,在2.0.4版本之前必须使用该写法,在2.0.5之后可以使用@EnableKnife4j
@EnableWebMvc
@EnableSwagger2
@Configuration
@ComponentScan(
		basePackages = {
				"com.github.xiaoymin.knife4j.spring.plugin",
				"com.github.xiaoymin.knife4j.spring.web"
		}
)
public class SwaggerConfig {

	@Bean
	public Docket defaultApi() {
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(groupApiInfo())
				.groupName("平台接口")
				.select()		                            
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
				.paths(PathSelectors.any())
				.build();
	}


	private ApiInfo groupApiInfo() {
		return new ApiInfoBuilder()
				.title("调试接口文档")
				.description("对外关键接口文档说明")
				.termsOfServiceUrl("http://www.group.com/")
				.contact("group@qq.com")
				.version("1.0")
				.build();
	}

}

**注意点: 区别于SpringBoot的注入,不使用@Configuration注解注入到Spring的IOC容器中,采用<bean>XML注入的方式注入到Spring的容器中

例如我的配置是: 

三、配置静态文件

由于knife4j是通过webjar的方式提供服务,因此对外访问的doc.html需要在我们的mvc环境中配置静态目录,否则会出现404,在spring.xml主容器的配置文件中配置

例如我的配置是:

另外这里需要注意的是: 需要在地址 <mvc:exclude-mapping path 中将上述地址排除,否则会跳转到默认页面中

另外需要在web.xml中进行配置:  添加部分servlet-mapping节点,添加这些节点是防止swagger的接口出现404的出现

四、基础配置已配置好,可以在需要的接口上进行注解的配置

1、首先在控制器的接口中添加@Api的注解 

2、在指定的接口上指定接口方法与接口参数等信息 例如:

 

五、完成基本的配置 可以尝试访问doc路径地址

 

剩下的工作即 将旧有的showdoc中的文档 一一对应的在系统中编写对应的接口进行迁移测试即可,当迁移测试完善完成后,即可舍弃旧有的文档工具。 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SpringMVC集成Knife4j 2.0.9的步骤如下: 1. 在项目的`pom.xml`文件中添加Knife4j的依赖: ``` <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.9</version> </dependency> ``` 2. 配置SpringMVC的`WebMvcConfigurer`,并重写`addResourceHandlers`方法,将Knife4j的静态资源目录添加到资源处理器中: ```java @Configuration public class Knife4jConfiguration implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("doc.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } } ``` 3. 在SpringMVC的配置类中添加`@EnableKnife4j`注解,开启Knife4j的自动配置功能: ```java @Configuration @EnableKnife4j public class MvcConfig { // 配置其他SpringMVC相关的配置 // ... } ``` 4. 在Controller类上使用Knife4j的注解,例如使用`@ApiOperation`注解添加接口文档的描述信息: ```java @RestController @Api(tags = "示例接口") public class SampleController { @ApiOperation("示例接口") @GetMapping("/sample") public String sample() { return "Hello, Knife4j!"; } } ``` 5. 启动项目后,访问`http://localhost:8080/doc.html`可以看到Knife4j的接口文档页面,其中包含了通过`@ApiOperation`注解添加的接口信息。 以上就是使用SpringMVC集成Knife4j 2.0.9的简要步骤,通过这样的配置,可以方便地为SpringMVC项目添加接口文档功能。注意,这里的步骤仅适用于Knife4j 2.0.9版本,如果有其他版本的需求,请参考相应版本的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值