引入依赖
<!--整合swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<scope>compile</scope>
</dependency>
配置类
import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
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;
/**
* Swagger2配置信息
*/
@Component
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("webApi")
.apiInfo(webApiInfo())
.select()
//扫描swaggger2注解
.apis(RequestHandlerSelectors.basePackage("com.itsh.controller"))
//只显示nacos_0406路径下的页面
.paths(Predicates.and(PathSelectors.regex("/nacos_0406/.*")))
// .paths(PathSelectors.any())
.build();
}
@Bean
public Docket adminApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
//起名字
.groupName("adminApi")
// adminApiInfo()方法调用
.apiInfo(adminApiInfo())
.select()
//只显示nacos_0405路径下的页面
.paths(Predicates.and(PathSelectors.regex("/nacos_0405/.*")))
//包扫描API注解
.apis(RequestHandlerSelectors.basePackage("com.itsh.controller"))
.build();
}
private ApiInfo webApiInfo(){
return new ApiInfoBuilder()
.title("前台-API文档")
.description("本文档描述了网站微服务接口定义")
.version("1.0")
.contact(new Contact("baidu", "http://baidu.com", "123456789@qq.com"))
.build();
}
private ApiInfo adminApiInfo(){
return new ApiInfoBuilder()
.title("后台管理系统-API文档")
.description("本文档描述了后台管理系统微服务接口定义")
.version("1.0")
.contact(new Contact("baidu", "http://baidu.com", "123456789@qq.com"))
.build();
}
}
启动类配置
@EnableSwagger2
接口层
import com.itsh.FeignApi.ConsumerApi;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/nacos_0405")
@Api(tags = {"MyController"},description = "测试API类型的描述信息") //tags可以理解为起别名
public class logController {
@Autowired
private ConsumerApi consumerApi;
@ApiOperation("用户登录1")
@ApiImplicitParams({
@ApiImplicitParam(name="mobile",value="手机号",required=true,paramType="form"),
@ApiImplicitParam(name="password",value="密码",required=true,paramType="form"),
// @ApiImplicitParam(name="age",value="年龄",required=true,paramType="form",dataType="Integer")
})
@GetMapping("/ins")
public ResponseEntity login() {
System.out.println(".....");
ResponseEntity conslogin = consumerApi.Conslogin();
Object body = conslogin.getBody();
System.out.println(conslogin);
System.out.println(body);
return ResponseEntity.ok(200);
}
}
具体实现可以参考
Swagger2 入门及使用_春哥的魔法书的博客-CSDN博客
出现的问题1
@ComponentScan注解报错
问题2 访问页面失败
package com.itsh.innt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import javax.servlet.Filter;
import java.util.HashMap;
//@SuppressWarnings("ALL")
@Configuration
public class InntUtils extends WebMvcConfigurationSupport {
@Autowired
private FilterUtils filterUtils;
@Bean
public FilterRegistrationBean<Filter> getFilter() {
FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();
filterRegistrationBean.setFilter(filterUtils);
HashMap<String, String> map = new HashMap<>();
map.put("Filets", "/*");
filterRegistrationBean.setInitParameters(map);
filterRegistrationBean.setName("tsetfuket");
filterRegistrationBean.setOrder(1);
return filterRegistrationBean;
}
// @Override
// protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// registry.addResourceHandler("swagger-ui.html")
// .addResourceLocations("classpath:/META-INF/resources/");
// }
// // @Value("${file.location}") // D:/test/
// String filelocation; // 这两个是路径
// // @Value("${file.path}") /file/**
// String filepath;
//
// @Override
// public void addResourceHandlers(ResourceHandlerRegistry registry) {
// //匹配到resourceHandler,将URL映射至location,也就是本地文件夹
// registry.addResourceHandler(filepath).addResourceLocations("file:///" + filelocation);//这里最后一个/不能不写
// }
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//匹配到resourceHandler,将URL映射至location,也就是本地文件夹
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
添加静态页面的配置即可