1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 【SpringBoot】集成swagger

【SpringBoot】集成swagger

时间:2018-08-26 11:09:11

相关推荐

【SpringBoot】集成swagger

1、引入依赖

<!--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>

2、配置header(若有token的话,可以采用如下配置)

3、配置包扫描多路径

import mon.base.Function;import mon.base.Optional;import mon.base.Predicate;import com.example.demo.constant.StringConstant;import org.springframework.context.annotation.Bean;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;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;/*** @className Swagger* @description swagger集成配置类* @author zlt* @date /10/23* @version 1.0.0* @remark**/@Configuration@EnableSwagger2@EnableWebMvcpublic class SwaggerConfig extends WebMvcConfigurerAdapter {@Beanpublic Docket createRestApi() {//在请求header头部添加token参数ParameterBuilder ticketPar = new ParameterBuilder();List<Parameter> pars = new ArrayList<>();//name表示名称,description表示描述ticketPar.name(StringConstant.HEAD_TOKEN).description("登录校验token").modelRef(new ModelRef("string")).parameterType("header")//required表示是否必填.required(false).defaultValue("TOKEN默认值").build();pars.add(ticketPar.build());return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()//可以配置多个包扫描路径.apis(SwaggerConfig.basePackage("com.example.demo.controller.department,com.example.demo.controller.user")).paths(PathSelectors.any()).build()//header配置在全局生效.globalOperationParameters(pars);}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("XXX接口文档").description("").termsOfServiceUrl("").version("1.0").build();}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}/*** @methodName basePackage* @description* @author zlt* @date /10/29* @param basePackage 多个包名以逗号隔开* @return mon.base.Predicate<springfox.documentation.RequestHandler>* @version 1.0.0**/public static Predicate<RequestHandler> basePackage(final String basePackage) {return new Predicate<RequestHandler>() {@Overridepublic boolean apply(RequestHandler input) {return declaringClass(input).transform(handlerPackage(basePackage)).or(true);}};}/*** @methodName handlerPackage* @description 处理包路径配置规则,支持多路径扫描匹配以逗号隔开* @author zlt* @date /10/29* @param basePackage 扫描包路径* @return mon.base.Function<java.lang.Class<?>,java.lang.Boolean>* @version 1.0.0**/private static Function<Class<?>, Boolean> handlerPackage(final String basePackage) {return new Function<Class<?>, Boolean>() {@Overridepublic Boolean apply(Class<?> input) {for (String strPackage : basePackage.split(",")) {boolean isMatch = input.getPackage().getName().startsWith(strPackage);if (isMatch) {return true;}}return false;}};}/*** @methodName declaringClass* @description 将实例对象转为optional对象* @author zlt* @date /10/29* @param input* @return mon.base.Optional<? extends java.lang.Class<?>>* @version 1.0.0**/private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {return Optional.fromNullable(input.declaringClass());}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。