一句话:
背后的原理:
当我们开启参数协商以后在RequestResponseBodyMethodProcessor里 有个方法
有个writeWithMessageConverter 这里包含消息的读和写操作 进入查看发现:
里面有个获取request的可以接受的类型 继续进入
调用了一个内容协商管理器的方法。进入方法
此方法遍历所有的strategy 我们查看此时的策略发现
此时存在两个策略一个是参数内容协商 另外是请求头内容协商。
oh 原来当我们写下那句 spring.mvc.contentnegotiation.favor-parameter=true
竟然会增加一种策略
咳咳,继续。。
进入strategy.resolveMediaTypes查看发现:
调用了一个方法解析媒体类型key 其中有个参数getMediaTypeKey 点击进入
原来在这个策略里会找到我们发送的参数名字 format ohhhhh!
ok 回到这个参数策略的方法
进入这个方法
获得key对应的媒体类型 如果key的mediaType为空返回*/*