前缀的属性:swagger.prefix
静态资源通过ResourceHandler定义访问路径;接口则通过RedirectViewController重定向。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @author markix
*/
@Configuration
public class SwaggerPrefixConfiguration implements WebMvcConfigurer {
@Value("${swagger.prefix:}")
private String swaggerPrefix;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (isPrefixSet()) {
registry.addResourceHandler(swaggerPrefix + "/swagger-ui.html*").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler(swaggerPrefix + "/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
if (isPrefixSet()) {
registry.addRedirectViewController(swaggerPrefix + "/v2/api-docs", "/v2/api-docs").setKeepQueryParams(true);
registry.addRedirectViewController(swaggerPrefix + "/swagger-resources", "/swagger-resources");
registry.addRedirectViewController(swaggerPrefix + "/swagger-resources/configuration/ui", "/swagger-resources/configuration/ui");
registry.addRedirectViewController(swaggerPrefix + "/swagger-resources/configuration/security", "/swagger-resources/configuration/security");
registry.addRedirectViewController("/swagger-ui.html", "/404");
}
}
private boolean isPrefixSet() {
return swaggerPrefix != null && !"".equals(swaggerPrefix) && !"/".equals(swaggerPrefix);
}
/* @Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.addPathPrefix(swaggerPrefix, clazz -> clazz.isAssignableFrom(ApiResourceController.class));
}*/
}
reference:
SpringBoot集成Swagger