spring boot 使用swagger
2024-09-04 14:48:53
在pom.xml中添加maven依赖
<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>
刚开始我用的2.8.0版本,后来折腾了好久,swagger页面就是不出来。换成2.7.0就好了。也许你折腾半天,换个版本就好了。
添加Swagger配置类:
package com.test.configuration; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; /**
*Swagger2配置类
*/ @Configuration
@EnableSwagger2//启用Swagger2
public class Swaggers { @Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))//扫描所有有注解的api
.paths(PathSelectors.any())
.build();
} /**
* 首页描述
* @return
*/
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("电话外呼api文档")
.description("rest接口")
.build();
}
}
添加controller类
package com.text.crm.callout.controller; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import com.text.callout.model.WarnCallOut;
import com.text.callout.service.WarnCallOutService; @RestController
@RequestMapping("/warn")
@Api(tags="电话外呼信息保存接口")
public class WarnCallOutController{ @Autowired
private WarnCallOutService warnCallOutService; /**
*@param WarnCallOut电话外呼对象
*@return
*/
@ApiOperation("保存电话外呼信息")
@RequestMapping(value = "/add",method=RequestMethod.POST)
public String addWarnCallOut(WarnCallOut warnCallOut){
return warnCallOutService.addWarnCallOut(warnCallOut);
}
}
添加POJO类
package com.test.entity; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; @ApiModel("电话外呼对象")
public class WarnCallOut {
@ApiModelProperty(value="序号,从1开始",hidden=true)
private Long id;
@ApiModelProperty(value="姓名",required=true)
private String name;
@ApiModelProperty(value="需要外乎的号码,本地号码加9,外地号码加90,多个号码用|隔开,如913800000000|9013900000000",required=true)
private String phonenum;
@ApiModelProperty(value="操作时间,如2018-12-06 22:00:00",required=true)
private String requesttime; public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhonenum() {
return phonenum;
}
public void setPhonenum(String phonenum) {
this.phonenum = phonenum;
}
public String getRequesttime() {
return requesttime;
}
public void setRequesttime(String requesttime) {
this.requesttime = requesttime;
}
}
运行启动类,启动Spring Boot程序,访问:http://localhost:8080/swagger-ui.html
如果你的没有成功。可以试试把配置类改成如下:
package com.test.configuration; import io.swagger.annotations.ApiOperation; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.util.UriComponentsBuilder; import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
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.spring.web.paths.Paths;
import springfox.documentation.spring.web.paths.AbstractPathProvider;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.List;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.format.FormatterRegistry;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.validation.MessageCodesResolver;
import org.springframework.validation.Validator;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.context.request.async.DeferredResult; /**
*Swagger2配置类
*/ @Configuration
@EnableSwagger2//启用Swagger2,生产环境记得注释掉
public class Swaggers implements WebMvcConfigurer{ @Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))//扫描所有有注解的api
.paths(PathSelectors.any())
.build();
} /**
* 首页描述
* @return
*/
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("电话外呼api文档")
.description("rest接口")
.build();
} /**
*重写BASE URL
*/
class BasePathAwareRalativePathProvider extends AbstractPathProvider{
private String basePath; public BasePathAwareRalativePathProvider(String basePath){
this.basePath=basePath;
} @Override
protected String applicationPath(){
return basePath;
} @Override
protected String getDocumentationPath(){
return "/";
} @Override
public String getOperationPath(String OperationPath){
UriComponentsBuilder uriComponentsBuilder=UriComponentsBuilder.fromPath("/");
return Paths.removeAdjacentForwardSlashes(uriComponentsBuilder.path("").build().toString());
}
} @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/");
}; /**
* 跨域支持
* @param corsRegistry
*/
@Override
public void addCorsMappings(CorsRegistry corsRegistry){
corsRegistry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET","POST","PUT","DELETE")
.allowedHeaders("*");
} @Override
public void configurePathMatch(PathMatchConfigurer pathMatchConfigurer){}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer contentNegotiationConfigurer){}
@Override
public void configureAsyncSupport(AsyncSupportConfigurer asyncSupportConfigurer){};
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer defaultServletHandlerConfigurer){};
@Override
public void addFormatters(FormatterRegistry formatterRegistry){};
@Override
public void addInterceptors(InterceptorRegistry interceptorRegistry){};
@Override
public void addViewControllers(ViewControllerRegistry viewControllerRegistry){};
@Override
public void configureViewResolvers(ViewResolverRegistry viewResolverRegistry){};
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers){};
@Override
public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers){};
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters){};
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters){};
@Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers){};
@Override
public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers){};
@Override
public Validator getValidator(){
return null;
}
@Override
public MessageCodesResolver getMessageCodesResolver(){
return null;
}
}
还是不行的话,
请下载这个demo : springboot-swagger2-demo 下载好解压然后eclipse导入MAVEN项目 直接就能运行。
spring boot 启动jar包时可指定Xmx(jvm运行过程中分配的最大内存),Xms(jvm启动时分配的内存) :
java -jar -Xmx 2048m -Xms 2048m 项目名.jar
-----------------------------------------------------------------------------
最新文章
- transformjs污染了DOM?是你不了解它的强大
- java web项目导入到eclipse中变成了java项目的一种情况的解决办法
- 【leetcode❤python】 203. Remove Linked List Elements
- 非官方windows下Cpython二进制扩展包下载地址
- PAT---1005. Spell It Right (20)
- Gradle插件
- iOS——文件操作NSFileManager (创建、删除,复制,粘贴)
- 临时解决linux下time wait问题
- 蓝桥杯-有理数类-java
- Section 1.1 Greedy Gift Givers
- JavaScript设计模式--门面模式
- CentOS 安装 Ansible 以及连接Windows server的办法
- firewall配置
- Spark SQL在100TB上的自适应执行实践(转载)
- Tirgger SimpleTrigger CronTrigger(四)
- idea jsp html 空白页的问题
- 【Java虚拟机】浅谈Java虚拟机
- MySQL数据库分区操作【RANGE】
- Ubuntu 安装Sqldeveloper
- shell cut