• 指定响应处理方法

  • @param errorAttributes

  • @return

*/

@Override

protected RouterFunction getRoutingFunction(ErrorAttributes errorAttributes) {

return RouterFunctions.route(RequestPredicates.all(), this::renderErrorResponse);

}

/**

  • 获取HTTP状态码

  • @param errorAttributes

  • @return

*/

@Override

protected HttpStatus getHttpStatus(Map<String, Object> errorAttributes) {

return HttpStatus.OK;

}

}

2.重写 ErrorWebFluxAutoConfiguration.class

import org.springframework.beans.factory.ObjectProvider;

import org.springframework.boot.autoconfigure.AutoConfigureBefore;

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;

import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;

import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;

import org.springframework.boot.autoconfigure.condition.SearchStrategy;

import org.springframework.boot.autoconfigure.web.ResourceProperties;

import org.springframework.boot.autoconfigure.web.ServerProperties;

import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;

import org.springframework.boot.context.properties.EnableConfigurationProperties;

import org.springframework.boot.web.reactive.error.DefaultErrorAttributes;

import org.springframework.boot.web.reactive.error.ErrorAttributes;

import org.springframework.context.ApplicationContext;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.core.annotation.Order;

import org.springframework.http.codec.ServerCodecConfigurer;

import org.springframework.web.reactive.config.WebFluxConfigurer;

import org.springframework.web.reactive.result.view.ViewResolver;

import java.util.Collections;

import java.util.List;

/**

  • 自定义全局异常处理配置

  • @author 向振华

  • @date 2020/07/01 09:52

*/

@Configuration

@ConditionalOnWebApplication(

type = Type.REACTIVE

)

@ConditionalOnClass({WebFluxConfigurer.class})

@AutoConfigureBefore({WebFluxAutoConfiguration.class})

@EnableConfigurationProperties({ServerProperties.class, ResourceProperties.class})

public class CustomErrorWebFluxAutoConfiguration {

private final ServerProperties serverProperties;

private final ApplicationContext applicationContext;

private final ResourceProperties resourceProperties;

private final List viewResolvers;

private final ServerCodecConfigurer serverCodecConfigurer;

public CustomErrorWebFluxAutoConfiguration(ServerProperties serverProperties, ResourceProperties resourceProperties, ObjectProvider<List> viewResolversProvider, ServerCodecConfigurer serverCodecConfigurer, ApplicationContext applicationContext) {

this.serverProperties = serverProperties;

this.applicationContext = applicationContext;

this.resourceProperties = resourceProperties;

this.viewResolvers = (List)viewResolversProvider.getIfAvailable(() -> {

return Collections.emptyList();

});

this.serverCodecConfigurer = serverCodecConfigurer;

}

@Bean

@ConditionalOnMissingBean(

value = {CustomErrorWebExceptionHandler.class},

search = SearchStrategy.CURRENT

)

@Order(-1)

public CustomErrorWebExceptionHandler errorWebExceptionHandler(ErrorAttributes errorAttributes) {

CustomErrorWebExceptionHandler exceptionHandler = new CustomErrorWebExceptionHandler(

errorAttributes,

this.resourceProperties,

this.serverProperties.getError(),

this.applicationContext);

exceptionHandler.setViewResolvers(this.viewResolvers);

exceptionHandler.setMessageWriters(this.serverCodecConfigurer.getWriters());

exceptionHandler.setMessageReaders(this.serverCodecConfigurer.getReaders());

return exceptionHandler;

}

@Bean

@ConditionalOnMissingBean(

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

金三银四到了,送上一个小福利!

image.png

image.png

专题+大厂.jpg

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

[外链图片转存中…(img-iDFd3s3e-1712808406853)]

[外链图片转存中…(img-tbYC8lym-1712808406854)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-IStsB3z8-1712808406854)]

更多推荐