控制器方法执行流程
1.获取bean和方法
2.获取databinderfactroy对象并且创建databinder
3.获取参数名的解析器
4.解析参数
5.把模型数据存在容器里
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
对象绑定过程:
先创建一个空的对象
然后把解析出来的数据赋值给对象
最后把模型对象存入容器里(containner)
对象名称如果指定
就用指定的 没有就用类型名
会调用标注了@ModelAttribute的方法把 把方法的返回值存入container容器里。若指定名字用指定的,没有就用返回值类型作为名字(分为全局和局部)
调用这个方法的时候会为containner补充容模型
返回值处理器
整合后的返回值处理器👇
这个常见
对于他的处理
处理
这个没有model 字符串内容就当作视图的名字
试图解析没有名字 用test3路径映射过去 会生成一个默认的视图名(modelandview 必须得有一个视图名)
与test3区别就是省略的ModelAttribute注解
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
这三种方法本身就代表响应不用管视图渲染了
对应的返回值处理器
是否已经处理(真) 就不会走视图渲染的流程了
源码👇
判断一下内部是否为 true 是的话就跳过渲染
1.响应的全部、
2.响应头
3.jason
MessageConverter
消息转换器
类似这个把jason数据格式转换为java对象
把java转换为jason
把对象转换为jason
把对象转换成xml
把jason转换为对象
既能返回XML又能返回jason无其他就按照顺序
如果request要求 就按request
如果response要求 就按response
同时也按response
@ControllerAdvice
1.@initbinder-》自定义类型转换器
2.@ModelAttribute-》返回结果补充为模型数据