package cc.mrbird.febs.common.doc.gateway.configure;
|
|
import cc.mrbird.febs.common.doc.gateway.filter.FebsDocGatewayHeaderFilter;
|
import cc.mrbird.febs.common.doc.gateway.handler.FebsDocGatewayHandler;
|
import cc.mrbird.febs.common.doc.gateway.properties.FebsDocGatewayProperties;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.cloud.gateway.config.GatewayProperties;
|
import org.springframework.cloud.gateway.route.RouteLocator;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import springfox.documentation.swagger.web.SecurityConfiguration;
|
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
|
import springfox.documentation.swagger.web.UiConfiguration;
|
|
/**
|
* @author MrBird
|
*/
|
@Configuration
|
@EnableConfigurationProperties(FebsDocGatewayProperties.class)
|
@ConditionalOnProperty(value = "febs.doc.gateway.enable", havingValue = "true", matchIfMissing = true)
|
public class FebsDocGatewayAutoConfigure {
|
|
private final FebsDocGatewayProperties febsDocGatewayProperties;
|
private SecurityConfiguration securityConfiguration;
|
private UiConfiguration uiConfiguration;
|
|
public FebsDocGatewayAutoConfigure(FebsDocGatewayProperties febsDocGatewayProperties) {
|
this.febsDocGatewayProperties = febsDocGatewayProperties;
|
}
|
|
@Autowired(required = false)
|
public void setSecurityConfiguration(SecurityConfiguration securityConfiguration) {
|
this.securityConfiguration = securityConfiguration;
|
}
|
|
@Autowired(required = false)
|
public void setUiConfiguration(UiConfiguration uiConfiguration) {
|
this.uiConfiguration = uiConfiguration;
|
}
|
|
@Bean
|
public FebsDocGatewayResourceConfigure febsDocGatewayResourceConfigure(RouteLocator routeLocator, GatewayProperties gatewayProperties) {
|
return new FebsDocGatewayResourceConfigure(routeLocator, gatewayProperties);
|
}
|
|
@Bean
|
public FebsDocGatewayHeaderFilter febsDocGatewayHeaderFilter() {
|
return new FebsDocGatewayHeaderFilter();
|
}
|
|
@Bean
|
public FebsDocGatewayHandler febsDocGatewayHandler(SwaggerResourcesProvider swaggerResources) {
|
FebsDocGatewayHandler febsDocGatewayHandler = new FebsDocGatewayHandler();
|
febsDocGatewayHandler.setSecurityConfiguration(securityConfiguration);
|
febsDocGatewayHandler.setUiConfiguration(uiConfiguration);
|
febsDocGatewayHandler.setSwaggerResources(swaggerResources);
|
febsDocGatewayHandler.setProperties(febsDocGatewayProperties);
|
return febsDocGatewayHandler;
|
}
|
}
|