package cc.mrbird.febs.gateway.common.configure;
|
|
import cc.mrbird.febs.gateway.common.handler.FebsGatewayExceptionHandler;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.boot.autoconfigure.web.ResourceProperties;
|
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
import org.springframework.boot.web.reactive.error.ErrorAttributes;
|
import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler;
|
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.core.Ordered;
|
import org.springframework.core.annotation.Order;
|
import org.springframework.http.codec.ServerCodecConfigurer;
|
import org.springframework.web.reactive.result.view.ViewResolver;
|
|
import java.util.List;
|
|
/**
|
* @author MrBird
|
*/
|
@Configuration
|
@RequiredArgsConstructor
|
public class FebsGatewayErrorConfigure {
|
|
private final ServerProperties serverProperties;
|
private final ApplicationContext applicationContext;
|
private final ResourceProperties resourceProperties;
|
private final List<ViewResolver> viewResolvers;
|
private final ServerCodecConfigurer serverCodecConfigurer;
|
|
@Bean
|
@Order(Ordered.HIGHEST_PRECEDENCE)
|
public ErrorWebExceptionHandler errorWebExceptionHandler(ErrorAttributes errorAttributes) {
|
FebsGatewayExceptionHandler exceptionHandler = new FebsGatewayExceptionHandler(
|
errorAttributes,
|
this.resourceProperties,
|
this.serverProperties.getError(),
|
this.applicationContext);
|
exceptionHandler.setViewResolvers(this.viewResolvers);
|
exceptionHandler.setMessageWriters(this.serverCodecConfigurer.getWriters());
|
exceptionHandler.setMessageReaders(this.serverCodecConfigurer.getReaders());
|
return exceptionHandler;
|
}
|
}
|