第一步:创建springBoot项目并且在pom.xml中引入knife4j的依赖包,代码如下:
<!--引入Knife4j的官方start包,该指南选择Spring Boot版本<3.0,开发者需要注意-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>
第二步:创建Swagger配置依赖,代码如下:
**
* 访问地址:http://localhost:8080/doc.html
*/
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {
@Bean(value = "dockerBean")
public Docket dockerBean() {
//指定使用Swagger2规范
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
//描述字段支持Markdown语法
.description("# Knife4j 接口文档")//简介
.termsOfServiceUrl("大帅杯")//服务Url
.contact("只因你太美")//作者名
.version("1.0")//版本
.build())
//分组名称
.groupName("用户服务")
.select()
//这里指定Controller扫描包路径自己的包,不然会是空的
.apis(RequestHandlerSelectors.basePackage("com.jiangweicong.seckill.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
}
第三步:加载静态文件,以及配置了拦截器,放行路径
@Configuration
public class MyWebMvcConfig extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//加载public文件夹数据
registry.addResourceHandler("/public/**")
.addResourceLocations("classpath:/public/");
/** 配置knife4j 显示文档 */
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
/** 公共部分内容 */
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
/**
*一般拦截器是在Bean实例化之前就已经开启,
*所以当拦截器调用redis工具类或者其他service层的时候会一直显示为null,
*因为这个时候Bean还未实例化,所以无法调用
*因此加入拦截器的时候要先用@Bean将拦截器先实例化,再将拦截器进行注册
*/
@Bean
public Interceptor getInterceptor(){
return new Interceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getInterceptor()).addPathPatterns("/**").
excludePathPatterns("/","*/login","*.html","/images/**","/doc.html","/webjars/**","/swagger-resources","/swagger-resources/**","/v3/**");
}
}
这里还有一个注意事项就是,用继承WebMvcConfigurationSupport方法的时候千万不能加@EnableWebMVC这个注解,因为我们是用继承的方法所以用该注解的时候他加载的是他本身的实现的内容,而我们自定义的静态文件就都不会加载。或者是直接WebConfig类直接实现WebMvcConfigurer的情况下才能加这个注解
第四步:新建一个接口Controller类,如下
@Api(tags = "登录模块")
@RestController
public class IndexController {
@ApiOperation(value = "登录")
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "用户名", paramType = "query", dataType = "String" ),
@ApiImplicitParam(name = "pwd", value = "密码", paramType = "query", dataType = "int" )
})
@PostMapping("/login")
public String login(@RequestParam(value = "name")String name,
@RequestParam(value = "pwd")int pwd){
String login=name+pwd;
return login;
}
}