springmvc-HandlerAdapter.handle()
2020-05-09 16:23:20 18 举报
spring mvc handleradapter
作者其他创作
大纲/内容
RequestMappingHandlerAdapter#handleInternal
反射调用controller层获取返回结果
body内容处理,内容转化,序列化等
执行方法
BeanSerializer#serialize
216行
BeanSerializerFactory#constructBeanSerializer生成JsonSerializer
处理返回的数据
扩展点: spring5.*的StreamingHttpOutputMessage处理
handle()
写response
抽象
_createSerializer2231行findBeanSerializer
SerializerProvider#_createAndCacheUntypedSerializer(Class)
对象属性的序列化
BeanSerializerFactory#createSerializer
InvocableHandlerMethod#invokeForRequest
AbstractGenericHttpMessageConverter#write
BasicSerializerFactory#findSerializerByAnnotations
RequestMappingHandlerAdapter#invokeHandlerMethod
循环执行
ObjectWriter.Prefetch#serialize
RequestResponseBodyMethodProcessor#handleReturnValue
BeanSerializerBase#serializeFields
返回类型媒体类型设置消息头,消息体。遍历List<HttpMessageConverter<?>> messageConverters 处理
DefaultSerializerProvider#serializeValue()
POJOPropertiesCollector#getJsonValueAccessor
JsonSerializer序列化的超类
AbstractJackson2HttpMessageConverter#writeInternal
HandlerMethodReturnValueHandlerComposite#handleReturnValue
SerializerProvider#_findExplicitUntypedSerializer
根据不同的属性类型,执行不同的实现类
序列化
前置操作
BasicBeanDescription#findJsonValueAccessor
适配器模式
继承
_serialize()
依赖属性循环操作
BeanPropertyWriter#serializeAsField
Jackson方式序列化
ServletInvocableHandlerMethod#invokeAndHandle
POJOPropertiesCollector#collectAll收集需要序列化的属性
多层抽象,子类抉择
0 条评论
下一页