首先要搭建一个springMVC的Maven的工程项目
1.pom.xml文件引入jar包
这里jar版本用的低的,2.7.0 太高了这个需要springmvc的4.6以上,不然会冲突
<!-- swagger2核心依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.0.1</version>
</dependency>
<!-- swagger-ui为项目提供api展示及测试的界面 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.0.1</version>
</dependency>
2.创建SwaggerConfig .java
package com.swagger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.swagger.api"))
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("开放接口API") //粗标题
.description("HTTP对外开放接口") //描述
.version("1.0.0") //api version
.termsOfServiceUrl("http://xx.xx.com")
.license("重新加载") //链接名称
.licenseUrl("http://xxx.xx.com") //链接地址
.build();
}
}
3.创建WebMvcConfigurerAdapter.java
package com.swagger;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("/swagger/**").addResourceLocations("classpath:/static/swagger/");
}
}
4.spring-mvc.xml增加启动加载扫描
<!-- 使用swagger接口,不需要就注释 -->
<context:component-scan base-package="com.swagger"/>
5.web.xml过滤拦截器配置一下,避免拦截
<servlet-mapping>
<url-pattern>/swagger-resources/**</url-pattern>
</servlet-mapping>
编写一些AIP
package com.swagger.apiInterface;
import com.controller.common.ChooseController;
import com.controller.framework.AdminBase;
import com.entity.globalmodel.User;
import com.wordnik.swagger.annotations.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
@Controller
@Api(value = "testController", description = "swagger接口定义")
@RequestMapping("/testController")
public class TestController {
public static final Logger logger = LogManager.getLogger(ChooseController.class);
/**
* 自定义
* @param request
* @return
*/
@RequestMapping(value = "/test",method = RequestMethod.POST)
@ApiOperation(value = "封装的用户对象",notes = "描述封装的用户对象")
public @ResponseBody Map<String, Object> test(HttpServletRequest request, HttpServletResponse response,@RequestBody User user){
Map<String, Object> result = new HashMap<String, Object>();
result.put("stuats","ok");
result.put("user",user);
return result;
}
/**
* 自定义
* @param request
* @return
*/
@RequestMapping(value = "/one",method = RequestMethod.GET)
@ApiOperation(value = "不用参数",notes = "不用参数")
public @ResponseBody Map<String, Object> one(HttpServletRequest request, HttpServletResponse response){
Map<String, Object> result = new HashMap<String, Object>();
result.put("stuats","ok");
return result;
}
/**
* 自定义
* @param request
* @return
*/
@RequestMapping(value = "/two",method = RequestMethod.GET)
@ApiOperation(value = "参数",notes = "参数")
@ApiImplicitParams({
@ApiImplicitParam(name="name",value="用户名",dataType="string", paramType = "query"),
@ApiImplicitParam(name="id",value="用户id",dataType="long", paramType = "query",required = true)})
public @ResponseBody Map<String, Object> two(HttpServletRequest request, HttpServletResponse response){
Map<String, Object> result = new HashMap<String, Object>();
result.put("stuats","ok");
result.put("name",request.getParameter("name"));
result.put("id",request.getParameter("id"));
return result;
}
}
启动服务浏览器输入
http://localhost:8080/contract/swagger-ui.html#/