目录
第一步:准备包,swagger2包与spring包要搭配使用
PersonController,类名上添加:@Api(value = "test")
方法接口上添加:@ApiOperation(value = "showPersons")
第一步:准备包,swagger2包与spring包要搭配使用
swagger2
<!-- swagger接口可视化 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
spring
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- spring版本号 -->
<spring.version>4.3.4.RELEASE</spring.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!-- spring核心包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
第二步,创建MySwaggerConfig.java
package org.test.base.swagger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import io.swagger.annotations.Api;
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;
@EnableWebMvc
@EnableSwagger2
@ComponentScan(basePackages = "org.test.controller")//你自己的controller层接口的位置,多位置逗号隔开追加
public class MySwaggerConfig extends WebMvcConfigurationSupport{
@Bean
public Docket myDocket() {
Docket docket = new Docket(DocumentationType.SWAGGER_2);
ApiInfo apiInfo = new ApiInfoBuilder()
.title("MySwagger[Api]") // 标题
.description("") // 描述
.contact(new Contact("", "", "")) // 联系方式
.version("2.0.0") // 版本号
.build();
docket.apiInfo(apiInfo);
//设置只生成被Api这个注解注解过的Ctrl类中有ApiOperation注解的api接口的文档
docket.select()
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any()) // 对所有路径进行监控
.build();
return docket;
}
// @Override
// public void addResourceHandlers(ResourceHandlerRegistry registry) {
// registry.addResourceHandler("/**").addResourceLocations(
// "classpath:/static/");
// registry.addResourceHandler("swagger-ui.html").addResourceLocations(
// "classpath:/META-INF/resources/");
// registry.addResourceHandler("/webjars/**").addResourceLocations(
// "classpath:/META-INF/resources/webjars/");
// super.addResourceHandlers(registry);
// }
//
// @Bean
// public RequestMappingInfoHandlerMapping requestMapping(){
// return new RequestMappingHandlerMapping();
// }
}
第三步:spring-mvc.xml添加配置
<bean class="org.test.base.swagger.MySwaggerConfig"/><!--第二步类的位置,下面的配置都默认不用改-->
<!-- <bean class="springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration" id="swagger2Config"/> -->
<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/"/>
<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>
<mvc:default-servlet-handler/>
第四步:很重要,必须/不可用*.xxx这个
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name><!--有的写得是springmvc-->
<url-pattern>/</url-pattern>
</servlet-mapping>
第五步:controller层接口修改添加注释
PersonController,类名上添加:@Api(value = "test")
方法接口上添加:@ApiOperation(value = "showPersons")
@Controller
@Api(value = "test")
@RequestMapping("/personController")
public class PersonController {
@Autowired
private PersonService personService;
@RequestMapping(value = "/showPerson",method = RequestMethod.POST)
@ApiOperation(value = "showPersons")
public ModelAndView showPersons(){
List<Person> persons = personService.loadPersons();
ModelAndView view = new ModelAndView("showPerson");
view.addObject("persons", persons);
return view;
}
@RequestMapping(value = "/showPerson2",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "showPerson2")
public List<Person> showPersons2(@RequestBody String id){
List<Person> persons = personService.loadPersons();
return persons;
}
@RequestMapping(value="/queryByPage", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "queryByPage")
public ServerResponse<Page<Person>> queryByPage(@RequestBody PageParam<PersonParam> pageParam) {
Map<String, Object> map = PropertieUtil.getPropertie();
System.out.println(map.get("jdbc.driver"));
return personService.queryByPage(pageParam);
}
}
完成,查看是否成功访问:http://ip:端口/工程名/swagger-ui.html,无工程名的就去掉工程名
我的是:http://localhost:8099/own/swagger-ui.html
可能报错:java.lang.NoSuchMethodError: UriComponentsBuilder()