Tom*_*Tom 1 java spring spring-mvc jackson
我正在开发一个使用Spring框架和Jackson的项目.但是,我无法找到一个插入的地方.我查看了Web上的许多示例,其中大多数使用类的bean org.springframework.http.converter.json.MappingJacksonHttpMessageConverter来允许反序列化@ResponseBody.所以,我无法找到任何引用MappingJacksonHttpMessageConverter.
我的问题:Spring框架会自动使用Jackson,如果它会在类路径中找到它将JSON转换为@ResponseBody对象吗?
如何启用杰克逊的其他方式是什么?
如果您在使用线了你的春天项目@EnableWebMvc通过使用标签或通过XML <mvc:annotation-driven />启用了一堆功能.您可以阅读原始Spring文档中的详细功能列表.
启用的功能之一是支持@RequestBody方法参数和@ResponseBody方法返回值.这是通过HttpMessageConverter组件完成的,并且为使用@RequestMapping或注释的方法启用了该功能@ExceptionHandler.
以下列出了默认注册的转换器:
ByteArrayHttpMessageConverter 转换字节数组.StringHttpMessageConverter 转换字符串.ResourceHttpMessageConverter转换为/来自org.springframework.core.io.Resource所有媒体类型.SourceHttpMessageConverter转换为/从javax.xml.transform.Source.FormHttpMessageConverter 将表单数据转换为MultiValueMap或从MultiValueMap转换.Jaxb2RootElementHttpMessageConverter 将Java对象转换为XML或从XML转换 - 如果类路径中存在JAXB2,则添加.MappingJackson2HttpMessageConverter(或MappingJacksonHttpMessageConverter)转换为/来自JSON - 如果类别路径中存在杰克逊2(或杰克逊),则添加.AtomFeedHttpMessageConverter 转换Atom提要 - 如果类路径中存在Rome,则添加.RssChannelHttpMessageConverter 转换RSS提要 - 如果类路径中存在罗马则添加.所以,如果你有一个支持Web杰克逊可用的项目在classpath中,Spring会自动从被标注了一个控制器方法转换返回值@ResponseBody(如果客户机调用接受JSON是这意味着接受头部通常必须设定to application/json).
如果您希望覆盖HttpMessageConverters,则可以实现以下内容:
@Configuration
@EnableWebMvc
public class YourConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
// Do your magic, override your stuff
}
}
Run Code Online (Sandbox Code Playgroud)
有关如何自定义例如杰克逊转换器一个很好的介绍,你可以阅读这篇文章从DZone约定制与Spring引导和Spring MVC HttpMessageConverters.
| 归档时间: |
|
| 查看次数: |
997 次 |
| 最近记录: |