Skip to content

#129 同组多包配置 #218

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 33 additions & 3 deletions src/main/java/com/spring4all/swagger/DocketConfiguration.java
Original file line number Diff line number Diff line change
@@ -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<String> basePackages) {
Predicate<RequestHandler> predicate = null;
for (String basePackage : basePackages) {
Predicate<RequestHandler> basePackagePredicate = RequestHandlerSelectors.basePackage(basePackage);
if (predicate == null) {
predicate = basePackagePredicate;
} else {
predicate.or(basePackagePredicate);
}
}
return predicate;
}

/**
* 全局请求参数
*
16 changes: 4 additions & 12 deletions src/main/java/com/spring4all/swagger/PathSelectors.java
Original file line number Diff line number Diff line change
@@ -34,12 +34,7 @@ public static Predicate<String> none() {
* @return predicate that matches a particular regex
*/
public static Predicate<String> regex(final String pathRegex) {
return new Predicate<String>() {
@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<String> ant(final String antPattern) {
return new Predicate<String>() {
@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);
};
}
}
4 changes: 2 additions & 2 deletions src/main/java/com/spring4all/swagger/SwaggerProperties.java
Original file line number Diff line number Diff line change
@@ -54,7 +54,7 @@ public class SwaggerProperties {
/**
* swagger会解析的包路径
**/
private String basePackage = "";
private List<String> basePackages = new ArrayList<>();

/**
* swagger会解析的url规则
@@ -242,7 +242,7 @@ public static class DocketInfo {
/**
* swagger会解析的包路径
**/
private String basePackage = "";
private List<String> basePackages = new ArrayList<>();

/**
* swagger会解析的url规则