mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-12 13:39:01 +08:00
✨ pig-common-swagger Code optimization, support servlet, webflux, gateway at the same time
This commit is contained in:
1 parent
22cb241520
commit
5548f11100
5 files changed
+47
-32
No files matched your search
+40
-14
@@ -1,15 +1,22 @@
|
||||
package com.pig4cloud.pigx.common.swagger.config;
|
||||
|
||||
import com.pig4cloud.pigx.common.swagger.support.SwaggerProperties;
|
||||
import com.pig4cloud.pigx.common.swagger.support.SwaggerResourceHandler;
|
||||
import com.pig4cloud.pigx.common.swagger.support.SwaggerSecurityHandler;
|
||||
import com.pig4cloud.pigx.common.swagger.support.SwaggerUiHandler;
|
||||
import com.pig4cloud.pigx.common.swagger.support.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||
import org.springframework.cloud.client.discovery.DiscoveryClient;
|
||||
import org.springframework.cloud.gateway.route.RouteDefinitionRepository;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.reactive.function.server.*;
|
||||
import org.springframework.web.reactive.function.server.RequestPredicates;
|
||||
import org.springframework.web.reactive.function.server.RouterFunction;
|
||||
import org.springframework.web.reactive.function.server.RouterFunctions;
|
||||
import org.springframework.web.reactive.function.server.ServerResponse;
|
||||
import springfox.documentation.swagger.web.SecurityConfiguration;
|
||||
import springfox.documentation.swagger.web.SecurityConfigurationBuilder;
|
||||
import springfox.documentation.swagger.web.UiConfiguration;
|
||||
import springfox.documentation.swagger.web.UiConfigurationBuilder;
|
||||
|
||||
/**
|
||||
* @author lengleng
|
||||
@@ -19,16 +26,19 @@ import org.springframework.web.reactive.function.server.*;
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)
|
||||
@ComponentScan("com.pig4cloud.pigx.common.swagger.support")
|
||||
public class GatewaySwaggerAutoConfiguration {
|
||||
|
||||
private final SwaggerResourceHandler swaggerResourceHandler;
|
||||
@Bean
|
||||
@Primary
|
||||
public SwaggerProvider swaggerProvider(RouteDefinitionRepository repository, SwaggerProperties swaggerProperties,
|
||||
DiscoveryClient discoveryClient) {
|
||||
return new SwaggerProvider(repository, swaggerProperties, discoveryClient);
|
||||
}
|
||||
|
||||
private final SwaggerSecurityHandler swaggerSecurityHandler;
|
||||
|
||||
private final SwaggerUiHandler swaggerUiHandler;
|
||||
|
||||
private final SwaggerProperties swaggerProperties;
|
||||
@Bean
|
||||
public SwaggerResourceHandler swaggerResourceHandler(SwaggerProvider swaggerProvider) {
|
||||
return new SwaggerResourceHandler(swaggerProvider);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public WebFluxSwaggerConfiguration fluxSwaggerConfiguration() {
|
||||
@@ -36,7 +46,23 @@ public class GatewaySwaggerAutoConfiguration {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RouterFunction swaggerRouterFunction() {
|
||||
public SwaggerSecurityHandler swaggerSecurityHandler(
|
||||
ObjectProvider<SecurityConfiguration> securityConfigurationObjectProvider) {
|
||||
SecurityConfiguration securityConfiguration = securityConfigurationObjectProvider
|
||||
.getIfAvailable(() -> SecurityConfigurationBuilder.builder().build());
|
||||
return new SwaggerSecurityHandler(securityConfiguration);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SwaggerUiHandler swaggerUiHandler(ObjectProvider<UiConfiguration> uiConfigurationObjectProvider) {
|
||||
UiConfiguration uiConfiguration = uiConfigurationObjectProvider
|
||||
.getIfAvailable(() -> UiConfigurationBuilder.builder().build());
|
||||
return new SwaggerUiHandler(uiConfiguration);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RouterFunction swaggerRouterFunction(SwaggerProperties swaggerProperties, SwaggerUiHandler swaggerUiHandler,
|
||||
SwaggerSecurityHandler swaggerSecurityHandler, SwaggerResourceHandler swaggerResourceHandler) {
|
||||
// 开启swagger 正常执行路由
|
||||
if (swaggerProperties.getEnabled()) {
|
||||
return RouterFunctions
|
||||
|
||||
-5
@@ -18,13 +18,11 @@
|
||||
package com.pig4cloud.pigx.common.swagger.support;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.cloud.client.discovery.DiscoveryClient;
|
||||
import org.springframework.cloud.gateway.route.RouteDefinition;
|
||||
import org.springframework.cloud.gateway.route.RouteDefinitionRepository;
|
||||
import org.springframework.cloud.gateway.support.NameUtils;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.stereotype.Component;
|
||||
import springfox.documentation.swagger.web.SwaggerResource;
|
||||
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
|
||||
|
||||
@@ -36,10 +34,7 @@ import java.util.stream.Collectors;
|
||||
/**
|
||||
* @author Sywd 聚合接口文档注册,和zuul实现类似
|
||||
*/
|
||||
@Primary
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true)
|
||||
public class SwaggerProvider implements SwaggerResourcesProvider {
|
||||
|
||||
private static final String API_URI = "/v2/api-docs";
|
||||
|
||||
+3
-7
@@ -17,11 +17,9 @@
|
||||
|
||||
package com.pig4cloud.pigx.common.swagger.support;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.reactive.function.BodyInserters;
|
||||
import org.springframework.web.reactive.function.server.HandlerFunction;
|
||||
import org.springframework.web.reactive.function.server.ServerRequest;
|
||||
@@ -36,12 +34,10 @@ import java.util.Optional;
|
||||
* @author lengleng
|
||||
* @date 2018-07-19 SwaggerSecurityHandler
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class SwaggerSecurityHandler implements HandlerFunction<ServerResponse> {
|
||||
|
||||
@Autowired(required = false)
|
||||
private SecurityConfiguration securityConfiguration;
|
||||
private final SecurityConfiguration securityConfiguration;
|
||||
|
||||
/**
|
||||
* Handle the given request.
|
||||
|
||||
+3
-5
@@ -17,11 +17,10 @@
|
||||
|
||||
package com.pig4cloud.pigx.common.swagger.support;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.reactive.function.BodyInserters;
|
||||
import org.springframework.web.reactive.function.server.HandlerFunction;
|
||||
import org.springframework.web.reactive.function.server.ServerRequest;
|
||||
@@ -37,11 +36,10 @@ import java.util.Optional;
|
||||
* @date 2018-07-19 SwaggerUiHandler
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class SwaggerUiHandler implements HandlerFunction<ServerResponse> {
|
||||
|
||||
@Autowired(required = false)
|
||||
private UiConfiguration uiConfiguration;
|
||||
private final UiConfiguration uiConfiguration;
|
||||
|
||||
/**
|
||||
* Handle the given request.
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<maven.compiler.version>3.8.1</maven.compiler.version>
|
||||
<spring.checkstyle.version>0.0.23</spring.checkstyle.version>
|
||||
<spring.checkstyle.version>0.0.28</spring.checkstyle.version>
|
||||
<git.commit.version>2.2.5</git.commit.version>
|
||||
<spring-boot-admin.version>2.4.1</spring-boot-admin.version>
|
||||
<hutool.version>5.6.3</hutool.version>
|
||||
|
||||
Reference in new issue
Block a user