ErrorMvcAutoConfiguration 主动配置异样解决规定

    • 给容器中放了这个组件:类型:DefaultErrorAttributes ->** **id:errorAttributes
      public class DefaultErrorAttributes implements ErrorAttributes, HandlerExceptionResolver
      DefaultErrorAttributes:定义谬误页面中能够蕴含哪些数据。



    • 给容器中放这个组件:类型:BasicErrorController --> id:basicErrorController(作用:json+白页 适配响应)
      • 解决默认 /error 门路的申请;如果是响应页面,就响应new ModelAndView("error", model)】error页面。否则响应ResponseEntity,把map外面的所有数据响应进来,相当于json数据。

        容器中有组件 View->id是error;(这个view是响应默认谬误页)
        容器中放组件 BeanNameViewResolver(视图解析器);依照返回的视图名error作为组件的id去容器中找View对象defaultErrorView。
        (springboot给容器中添了BasicErrorController组件,只有申请是发到error门路,默认就会去找error视图,而error视图又是容器中的一个view组件,那是怎么找到error视图的呢?就是用BeanNameViewResolver视图解析器依据组件的id(error)找到的,最终依据返回值error作为视图名,这个名作为id找到view对象。相当于view最终渲染成什么样就是什么样)

        点进(StaticView)defaultErrorView对象,发现外面有一个render办法,这个办法响应一个默认谬误页,相当于容器的组件 View->id是error它响应的是谬误页,默认是一个白页。

        小结:如果想要返回页面;就会找error视图【StaticView】。(默认是一个白页,因为曾经写死了)。为啥BasicErrorController 他既能响应html页面又能响应json,因为它外面有两个解决办法

        想要自定义谬误页的话,能够自定义一个视图,这个视图名叫error就行。

    • 给容器中放这个组件:类型:DefaultErrorViewResolver -> id:conventionErrorViewResolver
      • 如果产生谬误,会以HTTP的状态码 作为 视图页地址(viewName),找到真正的页面
      • error/404、5xx.html

总结:

如果感觉返回的信息不够,能够自定义DefaultErrorAttributes。如果不想让他响应默认谬误页或json,能够自定义BasicErrorController 。如果不想把谬误页面放在error文件夹下,能够自定义DefaultErrorViewResolver