SpringBoot接入Swagger及Swaggerui
Demo地址: https://gitee.com/pengld-demo/swagger-demo/Maven依赖 io.springfox springfox-swagger2 2.9.2 io.swagger swagger-models io.swagger swagger-models 1.5.21 io.swagger swagger-annotations 1.5.21 io.springfox springfox-swagger-ui 2.9.2 com.github.xiaoymin swagger-bootstrap-ui 1.9.6 Swagger配置package cn.pengld.swagger.config; import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Predicate; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.StringUtils; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import springfox.documentation.RequestHandler; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.ArrayList; import java.util.List; /** * 项目名称:apidoc * 设置 dev test 环境开启 prod 环境就关闭了 */ @EnableWebMvc @EnableSwagger2 @Configuration //@Profile({"local", "dev", "fat", "uat", "prefive", "pre"}) public class SwaggerConfig extends WebMvcConfigurationSupport { @Value("${swagger.path}") private String swaggerPath; @Value("${spring.application.name}") private String applicationName; @Bean public Docket createRestApi() { //在配置好的配置类中增加此段代码即可 ParameterBuilder ticketPar = new ParameterBuilder(); List parameters = new ArrayList(); //name表示名称,description表示描述 //required表示是否必填,defaultvalue表示默认值 ticketPar.name("ticket").description("ticket") .modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); parameters.add(ticketPar.build()); return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() .apis(basePackage(swaggerPath)) .paths(PathSelectors.any()).build().globalOperationParameters(parameters); } /** * api文档的详细信息函数,注意这里的注解引用的是哪个 * * @return */ private ApiInfo apiInfo() { return new ApiInfoBuilder() .title(!StringUtils.isEmpty(applicationName)?applicationName.toUpperCase() +"服务-API接口":"API接口") .version("1.0") .description("API-描述") .build(); } public static Predicate basePackage(final String basePackage) { return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true); } private static Function, Boolean> handlerPackage(final String basePackage) { return input -> { // 循环判断匹配 for (String strPackage : basePackage.split(",")) { boolean isMatch = input.getPackage().getName().startsWith(strPackage); if (isMatch) { return true; } } return false; }; } private static Optional<? extends Class<?>> declaringClass(RequestHandler input) { return Optional.fromNullable(input.declaringClass()); } } package cn.pengld.swagger.config; 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.WebMvcConfigurer; @Configuration @EnableWebMvc public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } } controller配置package cn.pengld.swagger.web.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.Data; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController @RequestMapping("/user") @Api(value = "/user", tags = "用户相关接口") public class UserController { @ApiOperation(value = "/getUserList", notes = "获取用户列表", httpMethod = "GET") @GetMapping(value = "/getUserList") public List getUserList(){ List userList = new ArrayList(); userList.add(new User(1L,"Jack")); return userList; } } @Data @AllArgsConstructor class User{ @ApiModelProperty(value = "id", name = "id") Long id; @ApiModelProperty(value = "name", name = "name") String name; }
双11来了,3k价位手机有什么值得入手的?VIVOIQOO7(高通888)8G(LPDDR5)128G(UFS3。1)3098元VIVOX60(三星1080)8G128G(UFS3。1)3198元一加9RT(高通888)8
助听器分几个功率?中功率,大功率,超大功率助听器按功率可以分为小功率大功率超大功率。助听器按功率分为小功率,中功率,中小功率,大功率,超大功率五种。都有一定的验配范围。还有就是每个厂家品牌不一样,他
2021。10。23最新电脑配置方向与推荐5000预算CPU酷睿I511400F主板微星B560MAPRO内存海盗船16G3200DDR4散热赛普雷冷山白光四铜管固态金士顿500GM2NVME协议显卡映众GTX16504G
科融环境布局新能源产业中证网讯(王珞)在日前举行的北京国际风能大会暨展览会上,科融环境(300152)表示,为进一步提升公司的综合竞争力,增强公司在新能源科技创新产业领域的业务拓展,公司将在深圳重庆设立
Mac地址会不会有重复的?怎么做到全球唯一的?如果网卡作废了,那么Mac地址回收吗?MAC地址并不能保证唯一性,而且用户可以随意修改电脑的MAC地址,但是并没有影响到相互通信,这是为什么呢?下文具体说一说。MAC地址MAC地址,也称为物理地址硬件地址,存储在设备的
如果苹果退出中国,富士康会怎么样?和你想的不一样如果苹果退出中国,富士康会怎么样很久没有在头条上写东西了,不过因为我之前在头条的文章大多都是关于富士康的,所以头条君还经常给我推送一些关于富士康的问题。基本上我也都会做一些简短的回
苹果摊上事了,或将面临1777亿的天价罚款最近垄断一词在国际领域似乎已经成了敏感词汇,虽然这种现象在全球范围内一直普遍存在,一直没有办法根治,甚至很多国家还支持一些企业去搞垄断以达到自己不可告人的秘密。前段时间我们开始整治
现在的手机像素都特别高,那还有必要使用单反吗?有没有必要,主要看需要。鞋子合适不合适,脚知道。智能手机的拍照效果确实是越来越好。很多智能手机的品牌都和一些知名的相机厂商合作,联手打造出很多以拍照效果强大著称的大屏智能手机。像素
企业如何进行进销存管理?这个问题,轻流值得拥有姓名。轻流作为一款支持自定义地系统搭建平台,为企业不同场景下提供了丰富的解决方案,比如进销存的解决方案,是不需要编程安全性更高软件之间的数据实现集成的企业级软
电商行业如何选择好的短信群发平台?首先简单了解群发短信平台都有哪些类型第一类是资质齐全实力雄厚的群发短信公司,直接与三大运营商合作。这样的发送速度快,到达率高,稳定性也好,比如宣翼通短信平台。第二类是一些第三方代理
抖音平台封禁帐号的依据到底是什么?本人刚买一个手机号,注册抖音号不到12小时,关注被封禁!不到72小时永久被封禁!本人只拍了风景配上音乐发布了几部作品,本人并没有违反抖音平台的任何规则规定!本人也多次向抖音平台反馈