SpringMVC 确定目标方法 POJO 类型入参过程
1、确定一个 Key
1.) 若目标方法的 POJO 类型参数没有使用 @ModelAttribute 作为修饰,则 key 为 POJO 类名的第一个字母的小写
2.) 若使用了 @ModelAttribute 来修饰,则 key 为 @ModelAttribute 注解的 value 属性
2、在 implicitModel 中查找 key 对应的对象,若存在,则作为入参传入
1.) 若在 @ModelAttribute 标记的方法中在 Map 中保存过,且 key 和 1 确定的 key 一致,则会获取到
3、若 implicitModel 中不存在 key 对应的对象,则检查当前的 Handler 是否使用 @SessionAttributes 注解修饰,若使用了,且 @SessionAttributes 注解的 value 属性值包含了 key ,则会从 HttpSession 中来获取 key 所对应的 value 值,若存在则直接传入到目标方法的入参中,若不存在,则抛出异常
4、若 Handler 没有标识 @SessionAttributes 注解或 @SessionAttributes 注解的 value 值中不包含 key ,则会通过反射来创建 POJO 类型的对象,传入目标方法的参数。
5、SpringMVC 会把 key 和POJO 类型的对象 保存到 implicitModel 中,进而会保存到 request 中。