容器中只要有一个 WebMvcConfigurer 组件。配置的底层行为都会生效???

  1. WebMvcConfigurer是干什么用的: 是一个接口,用于配置 Spring MVC 的行为和属性。它定义了多个回调方法,可用于自定义和扩展 Spring MVC 的功能。
    1. configurePathMatch(PathMatchConfigurer configurer):用于配置 URL 路径匹配的规则,例如是否区分大小写、是否使用后缀模式匹配等。

    2. addInterceptors(InterceptorRegistry registry):用于注册拦截器,拦截特定的请求并执行相应的操作。

    3. addViewControllers(ViewControllerRegistry registry):用于快速地注册简单的视图控制器,将指定的 URL 映射到指定的视图。

    4. addResourceHandlers(ResourceHandlerRegistry registry):用于配置静态资源的处理器,指定静态资源的访问路径和存放位置。

    5. configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer):配置是否启用默认的 Servlet 处理,用于处理静态资源的请求。

    6. extendMessageConverters(List> converters):扩展或覆盖默认的消息转换器,用于处理请求和响应的数据格式转换。

    7. addArgumentResolvers(List argumentResolvers):添加自定义的参数解析器,用于解析控制器方法的参数。

    8. addReturnValueHandlers(List returnValueHandlers):添加自定义的返回值处理器,用于处理控制器方法的返回值。

  2. WebMvcAutoConfiguration 是一个自动配置类,它里面有一个 EnableWebMvcConfiguration
  3. EnableWebMvcConfiguration继承与 DelegatingWebMvcConfiguration,这两个都生效
  4. DelegatingWebMvcConfiguration利用 DI 把容器中 所有 WebMvcConfigurer 注入进来
    1. DelegatingWebMvcConfiguration 的作用就是将容器中的所有 WebMvcConfigurer 实例收集起来,并委派给这些配置器来进行配置工作。它使用了依赖注入的方式,通过自动装配将所有 WebMvcConfigurer 注入到自身内部的一个列表中。
    2. 通过这种方式,DelegatingWebMvcConfiguration 可以将各个配置器的配置逻辑集中起来,统一管理,并保证所有的配置器都能够生效。这样,我们只需要将自定义的 WebMvcConfigurer 实现类添加到容器中,它们就会被自动注入到 DelegatingWebMvcConfiguration 中,从而参与到 Spring MVC 的配置过程中。
  5. 别人调用 `DelegatingWebMvcConfiguration` 的方法配置底层规则,而它调用所有 WebMvcConfigurer的配置底层方法。
    1. 为什么要通过DelegatingWebMvcConfiguration来调用WebMvcConfigurer 的方法,为什么不直接用WebMvcConfigurer?
      1. ​​​​​​​通过引入 DelegatingWebMvcConfiguration 来调用 WebMvcConfigurer 的方法,可以提高代码的可维护性、可复用性和可扩展性。它将配置逻辑与核心业务逻辑解耦,实现了职责分离和扩展的灵活性,使得系统的配置能够更加灵活地适应不同的需求和场景。

你可能感兴趣的:(java)