WebMvcConfigurationSupport导致SpringMvcConfig类中注册拦截器失败
源代码:
运行后,仅显示前端的反应,而拦截器没有被运行,
原因:
在Spring MVC中,**WebMvcConfigurationSupport
类的扩展会导致Spring MVC的默认配置被完全替换,而不是扩展**。这意味着,如果你重写了addResourceHandlers
方法但没有显式调用addInterceptors
方法,那么默认的拦截器配置(包括你可能在其他地方定义的拦截器)将不会被注册和应用。
当你删除extends WebMvcConfigurationSupport
时,Spring MVC会使用其默认的配置,这包括了自动注册WebMvcConfigurer
中定义的拦截器。这就是为什么在删除继承WebMvcConfigurationSupport
后,拦截器能够正常运行的原因。
简而言之,继承WebMvcConfigurationSupport
会完全控制Spring MVC的配置,因此需要确保手动添加所有必要的配置,包括拦截器。如果不希望完全控制配置,而是希望扩展默认配置,那么应该实现WebMvcConfigurer
接口而不是继承WebMvcConfigurationSupport
类
扩展:
WebMvcConfigurer
和WebMvcConfigurationSupport
在Spring MVC中都是用于配置的工具,但它们在使用和实现方式上有所不同。
-
实现方式:
WebMvcConfigurer
是一个接口,提供了多个回调方法,用于自定义Spring MVC的配置,使用时只需实现该接口并重写其中的方法。而WebMvcConfigurationSupport
是一个抽象类,也提供了多个回调方法,但需要继承该类并重写其中的方法才能使用12。 -
作用:
WebMvcConfigurer
主要用于添加或修改Spring MVC的配置,如添加拦截器、自定义消息转换器等。而WebMvcConfigurationSupport
主要用于完全自定义Spring MVC的配置,继承该类会覆盖Spring MVC的部分默认配置12。 -
继承关系:
WebMvcConfigurer
没有继承关系,只需实现该接口即可使用。而WebMvcConfigurationSupport
是一个抽象类,需要继承后才能使用