diff --git a/src/main/java/com/spring4all/swagger/DocketConfiguration.java b/src/main/java/com/spring4all/swagger/DocketConfiguration.java index b83257d..6b0e83e 100644 --- a/src/main/java/com/spring4all/swagger/DocketConfiguration.java +++ b/src/main/java/com/spring4all/swagger/DocketConfiguration.java @@ -1,5 +1,7 @@ package com.spring4all.swagger; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -19,6 +21,7 @@ import com.google.common.base.Predicates; +import springfox.documentation.RequestHandler; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.builders.RequestParameterBuilder; @@ -70,8 +73,9 @@ public void createSpringFoxRestApi() { Docket docket4Group = (Docket)beanFactory.getBean(beanName); ApiInfo apiInfo = apiInfo(swaggerProperties); + docket4Group.host(swaggerProperties.getHost()).apiInfo(apiInfo).select() - .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage())) + .apis(apis(swaggerProperties.getBasePackages())) .paths(paths(swaggerProperties.getBasePath(), swaggerProperties.getExcludePath())).build(); return; } @@ -124,12 +128,38 @@ public void createSpringFoxRestApi() { beanRegistry.registerBeanDefinition(beanName, beanDefinition4Group); Docket docket4Group = (Docket)beanFactory.getBean(beanName); - docket4Group.groupName(groupName).host(docketInfo.getBasePackage()).apiInfo(apiInfo).select() - .apis(RequestHandlerSelectors.basePackage(docketInfo.getBasePackage())) + docket4Group.groupName(groupName).host(host()).apiInfo(apiInfo).select() + .apis(apis(docketInfo.getBasePackages())) .paths(paths(docketInfo.getBasePath(), docketInfo.getExcludePath())).build(); } } + private String host() { + try { + return InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + return "127.0.0.1"; + } + } + + /** + * 同组多包配置 + * @param basePackages + * @return + */ + private Predicate apis(List basePackages) { + Predicate predicate = null; + for (String basePackage : basePackages) { + Predicate basePackagePredicate = RequestHandlerSelectors.basePackage(basePackage); + if (predicate == null) { + predicate = basePackagePredicate; + } else { + predicate.or(basePackagePredicate); + } + } + return predicate; + } + /** * 全局请求参数 * diff --git a/src/main/java/com/spring4all/swagger/PathSelectors.java b/src/main/java/com/spring4all/swagger/PathSelectors.java index dad2d27..03fb36c 100644 --- a/src/main/java/com/spring4all/swagger/PathSelectors.java +++ b/src/main/java/com/spring4all/swagger/PathSelectors.java @@ -34,12 +34,7 @@ public static Predicate none() { * @return predicate that matches a particular regex */ public static Predicate regex(final String pathRegex) { - return new Predicate() { - @Override - public boolean apply(String input) { - return input.matches(pathRegex); - } - }; + return input -> input.matches(pathRegex); } /** @@ -49,12 +44,9 @@ public boolean apply(String input) { * @return predicate that matches a particular ant pattern */ public static Predicate ant(final String antPattern) { - return new Predicate() { - @Override - public boolean apply(String input) { - AntPathMatcher matcher = new AntPathMatcher(); - return matcher.match(antPattern, input); - } + return input -> { + AntPathMatcher matcher = new AntPathMatcher(); + return matcher.match(antPattern, input); }; } } diff --git a/src/main/java/com/spring4all/swagger/SwaggerProperties.java b/src/main/java/com/spring4all/swagger/SwaggerProperties.java index 88f58b1..a39a989 100644 --- a/src/main/java/com/spring4all/swagger/SwaggerProperties.java +++ b/src/main/java/com/spring4all/swagger/SwaggerProperties.java @@ -54,7 +54,7 @@ public class SwaggerProperties { /** * swagger会解析的包路径 **/ - private String basePackage = ""; + private List basePackages = new ArrayList<>(); /** * swagger会解析的url规则 @@ -242,7 +242,7 @@ public static class DocketInfo { /** * swagger会解析的包路径 **/ - private String basePackage = ""; + private List basePackages = new ArrayList<>(); /** * swagger会解析的url规则