8e1d6958bede2000d5e6993289bb57f86a447d96.svn-base 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package cn.com.goldenwater.dcproj.config;
  2. import cn.com.goldenwater.dcproj.constValue.SplitValue;
  3. import com.google.common.base.Function;
  4. import com.google.common.base.Optional;
  5. import com.google.common.base.Predicate;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  10. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  11. import springfox.documentation.RequestHandler;
  12. import springfox.documentation.builders.ApiInfoBuilder;
  13. import springfox.documentation.builders.PathSelectors;
  14. import springfox.documentation.service.ApiInfo;
  15. import springfox.documentation.spi.DocumentationType;
  16. import springfox.documentation.spring.web.plugins.Docket;
  17. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  18. @Configuration
  19. @EnableSwagger2
  20. public class SwaggerConfig extends WebMvcConfigurerAdapter {
  21. @Value("${swagger.enable}")
  22. private boolean enable;
  23. @Override
  24. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  25. registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
  26. registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
  27. }
  28. @Value("${targetPackage}")
  29. private String targetPackage;
  30. @Bean
  31. public Docket dc_api() {
  32. String basePackage = "cn.com.goldenwater.dcproj.controller.";
  33. if(enable) {
  34. if (!targetPackage.startsWith(SplitValue.FENHAO_SPLIT)) {
  35. targetPackage = SplitValue.FENHAO_SPLIT + targetPackage;
  36. basePackage = targetPackage.replace(SplitValue.FENHAO_SPLIT, SplitValue.FENHAO_SPLIT + basePackage);
  37. }
  38. if (basePackage.startsWith(SplitValue.FENHAO_SPLIT)) {
  39. basePackage = basePackage.substring(1);
  40. }
  41. }
  42. return getDocket("督查全部api",basePackage+";com.workflow.bpm.api.bpmservices","系统全部api接口");
  43. }
  44. private Docket getDocket(String groupName,String basePackage,String desc){
  45. return new Docket(DocumentationType.SWAGGER_2).enable(enable)
  46. .groupName(groupName)
  47. .select()
  48. .apis(basePackage(basePackage))
  49. .paths(PathSelectors.any())
  50. .build()
  51. .apiInfo(apiInfo(desc));
  52. }
  53. public static Predicate<RequestHandler> basePackage(final String basePackage) {
  54. return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
  55. }
  56. private static Function<Class<?>, Boolean> handlerPackage(final String basePackage) {
  57. return input -> {
  58. // 循环判断匹配
  59. for (String strPackage : basePackage.split(SplitValue.FENHAO_SPLIT)) {
  60. boolean isMatch = input.getPackage().getName().startsWith(strPackage);
  61. if (isMatch) {
  62. return true;
  63. }
  64. }
  65. return false;
  66. };
  67. }
  68. private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
  69. return Optional.fromNullable(input.declaringClass());
  70. }
  71. private ApiInfo apiInfo(String desc) {
  72. return new ApiInfoBuilder()
  73. .title("督查项目API")
  74. .description(desc)
  75. .version("0.0.1")
  76. .termsOfServiceUrl("http://www.goldenwater.com.cn")
  77. .license("LICENSE")
  78. .licenseUrl("http://www.goldenwater.com.cn")
  79. .build();
  80. }
  81. }