SpringMVC集成Swagger2生成在线API文档
上一篇文章中讲解了SpringBoot集成Swagger2构建在线API文档,大家可以去看看
今天详细介绍一下SpringMVC集成swagger2
一、代码集成
pom.xml
<!-- swagger2配置 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<!-- swagger2配置 -->
在spring-mvc.xml中添加映射静态的配置:
<mvc:default-servlet-handler />
新增SwaggerConfig配置类:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
*
* @ClassName: SwaggerConfig
* @Description:swagger2配置类
* @date 2020年12月17日
*
*/
@Configuration
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfig {
@Bean
public Docket buildDocket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(buildApiInf())
.select()
// .apis(RequestHandlerSelectors.basePackage("com.xingguo.logistics.controller"))//controller路径
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //为有@ApiOperation注解的方法生成API文档
.paths(PathSelectors.any())
.build();
}
private ApiInfo buildApiInf(){
return new ApiInfoBuilder()
.title("接口API") //文档标题
.contact(new Contact("liud", //作者
"",
"")) //联系人
.description("接口API")//详细信息
.version("1.0.0")//文档版本号
.termsOfServiceUrl("")//网站地址
.build();
}
}
避坑操作:
①其中@EnableWebMvc这个注解需要加入,不然会报错,无法启动项目
②然后在spring-mvc.xml中注入SwaggerConfig配置类:
<!-- swagger2config配置类注入 -->
<bean id="swaggerConfig" class="com.liud.common.config.SwaggerConfig"></bean>
二、使用
在Controller中添加注解@API来标注这个类是swagger的资源
@Api(value="接口controller",description="操作接口")
public class ApiControllor {
在方法上面使用注解@ApiOperation()表示一个http请求的操作
在参数前面使用注解@ApiParam()表示对参数的添加元数据(说明或是否必填等)
@RequestMapping(value = "/houseTransferNew", method = RequestMethod.POST)
public String houseTransferNew(@RequestBody @ApiParam(name="房屋转让对象",value="传入json格式",required=true) HouseTransferNewHistory houseTransferNewHistory) {
最后启动项目,访问地址:
http://{ip}:{port}/{projectname}/swagger-ui.html#/