SpringBoot对Spring MVC都做了哪些事?(一)

网站建设3年前发布
17 0 0

20230305225709f81eda91659d96b35a46125f111e1a76435f1a435,环境:Springboot2.4.12,Spring Boot为Spring MVC提供了自动配置,可以很好地与大多数应用程序配合使用。,自动配置在Spring默认设置的基础上添加了以下功能:,如果你想保留那些Spring Boot MVC自定义,并做更多的MVC自定义(拦截器、格式化器、视图控制器和其他特性),你可以添加你自己的WebMvcConfigurer类型的@Configuration类,但不需要@EnableWebMvc。,如果你想提供RequestMappingHandlerMapping、RequestMappingHandlerAdapter或ExceptionHandlerExceptionResolver的自定义实例,并且仍然保持Spring Boot MVC自定义,你可以声明一个WebMvcRegistrations类型的bean,并使用它来提供这些组件的自定义实例。,上面这段什么意思?就是我们可以自定义一个Class实现WebMvcRegistrations接口实现自定义的上面的RequestMappingHandlerMapping等相关的类。,自动配置中又是如何使用(知道)我们自定义的这个WebMvcRegistrations 类呢?,这里RequestMappingHandlerMapping 为例说明自动配置是如何使用自定义的。接着上面的类中,有如下方法定义。,以上就是自动配置实现自定义RequestMappingHandlerMapping 等相关WebMVC核心组件的方式。,如何完全的自己控制WebMVC的配置呢?,你可以添加自己的@Configuration注释@EnableWebMvc,或者自定义配置类 @Configuration注释且此类是DelegatingWebMvcConfiguration的子类。,如果你想定制Spring MVC使用的ConversionService,你可以提供一个带有addFormatters方法的WebMvcConfigurer bean。通过这个方法,你可以注册任何你喜欢的转换器,或者你可以委托给ApplicationConversionService上可用的静态方法。,Spring MVC使用HttpMessageConverter接口来转换HTTP请求和响应。合理的默认值是开箱即用的。例如,可以将对象自动转换为JSON(通过使用Jackson库)或XML(通过使用Jackson XML扩展(如果可用),或通过使用JAXB(如果Jackson XML扩展不可用)。缺省情况下,字符串是用UTF-8编码的。,如果你需要添加或自定义转换器,你可以使用Spring Boot的HttpMessageConverters类,如下所示:,自动配置又是如何使用咱们自定义的配置?,系统提供的WebMvcConfigurer 实现类WebMvcAutoConfigurationAdapter。,以上就将自定义的HttpMessageConverter 添加到了容器中。,如果你使用Jackson来序列化和反序列化JSON数据,你可能需要编写自己的JsonSerializer和JsonDeserializer类。自定义序列化器通常通过模块注册到Jackson,但Spring Boot提供了一个替代的@JsonComponent注释,可以更容易地直接注册Spring bean。,你可以在JsonSerializer、JsonDeserializer或KeyDeserializer实现中直接使用@JsonComponent注释。你也可以在包含序列化器/反序列化器作为内部类的类上使用它,如下所示:,ApplicationContext中的所有@JsonComponent bean都会自动向Jackson注册。因为@JsonComponent是用@Component进行元注释的,所以通常的组件扫描规则也适用。,Spring Boot还提供了JsonObjectSerializer和JsonObjectDeserializer基类,它们在序列化对象时提供了标准Jackson版本的有用替代方案。

© 版权声明

相关文章