Spring boot WebMvcConfigurationSupport vs WebMvcConfigurer

PS:区别是当继承WebMvcConfigurationSupport时会覆盖原配置,而WebMvcConfigurer是自定义配置.

最近在Spring boot环境下调试一个问题时发现自己定义的WebMvcConfigurer不生效,然后就把Spring boot加载Spring mvc的配置看了一遍,后来发现WebMvcAutoConfiguration类ConditionOn了WebMvcConfigurationSupport方法,当实现这个类时不执行Spring boot的WebMvcAutoConfiguration类配置信息,也就是我们在项目中不能及继承WebMvcConfigurationSupport类又实现

WebMvcConfigurer类.

代码分析:

从EnableWebMvcConfiguration配置类开始,当它注入时父类会注入Spring容器中所有的WebMvcConfigurer类

Spring boot WebMvcConfigurationSupport vs WebMvcConfigurer_第1张图片

接着注入RequestMappingHandlerAdapter Bean 它会调用父类的requestMappingHandlerAdapter方法

Spring boot WebMvcConfigurationSupport vs WebMvcConfigurer_第2张图片

Spring boot WebMvcConfigurationSupport vs WebMvcConfigurer_第3张图片

这个时候获取配置,例如自定义了返回结果Handler, WebMvcConfigurerComposite会遍历调用WebMvcConfigurer实现类的

addReturnValueHandlers方法,会把自定义配置加载到默认的配置中.

Spring boot WebMvcConfigurationSupport vs WebMvcConfigurer_第4张图片

你可能感兴趣的:(J2ee)