| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package cn.com.goldenwater.dcproj.config;
- import cn.com.goldenwater.dcproj.constValue.SplitValue;
- 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.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.PathSelectors;
- import springfox.documentation.service.ApiInfo;
- import springfox.documentation.spi.DocumentationType;
- import springfox.documentation.spring.web.plugins.Docket;
- import springfox.documentation.swagger2.annotations.EnableSwagger2;
- @Configuration
- @EnableSwagger2
- public class SwaggerConfig extends WebMvcConfigurerAdapter {
- @Value("${swagger.enable}")
- private boolean enable;
- @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/");
- }
- @Value("${targetPackage}")
- private String targetPackage;
- @Bean
- public Docket dc_api() {
- String basePackage = "cn.com.goldenwater.dcproj.controller.";
- if(enable) {
- if (!targetPackage.startsWith(SplitValue.FENHAO_SPLIT)) {
- targetPackage = SplitValue.FENHAO_SPLIT + targetPackage;
- basePackage = targetPackage.replace(SplitValue.FENHAO_SPLIT, SplitValue.FENHAO_SPLIT + basePackage);
- }
- if (basePackage.startsWith(SplitValue.FENHAO_SPLIT)) {
- basePackage = basePackage.substring(1);
- }
- }
- return getDocket("督查全部api",basePackage+";com.workflow.bpm.api.bpmservices","系统全部api接口");
- }
- private Docket getDocket(String groupName,String basePackage,String desc){
- return new Docket(DocumentationType.SWAGGER_2).enable(enable)
- .groupName(groupName)
- .select()
- .apis(basePackage(basePackage))
- .paths(PathSelectors.any())
- .build()
- .apiInfo(apiInfo(desc));
- }
- public static Predicate<RequestHandler> basePackage(final String basePackage) {
- return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
- }
- private static Function<Class<?>, Boolean> handlerPackage(final String basePackage) {
- return input -> {
- // 循环判断匹配
- for (String strPackage : basePackage.split(SplitValue.FENHAO_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());
- }
- private ApiInfo apiInfo(String desc) {
- return new ApiInfoBuilder()
- .title("督查项目API")
- .description(desc)
- .version("0.0.1")
- .termsOfServiceUrl("http://www.goldenwater.com.cn")
- .license("LICENSE")
- .licenseUrl("http://www.goldenwater.com.cn")
- .build();
- }
- }
|