我是靠谱客的博主 聪明大米,最近开发中收集的这篇文章主要介绍Spring boot中使用@SessionAttributes需要注意的地方,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在Spring Boot中,如果想把数据保存在session里,当然可以使用原生Request直接保存session,有个更方便的方法,那就是使用注解@SessionAttributes。

使用这个注解,需要搞清楚它的运行原理,也就是什么时候保存,什么时候取出,否则当得出非期望的结果时会很疑惑。

尤其当和注解@ModelAttribute混用的时候,需要搞清楚优先级。

 

1.Session的保存。

   当某个Controller类里使用了@SessionAttributes注解后,请求执行完handler后,会把保存在model里指定的数据保存到session里。

   由于执行时机的问题,当跟注解@ResponseBody混用的时候,会出错。

   使用@ResponseBody注解,返回一个实体类时,ReturnValueHandler用的是RequestResponseBodyMethodProcessor,在内部直接会把结果写入到response,然后关闭。

   然后再往session里写数据的话,就已经写不进去了。

   解决的方法是不用注解@ResponseBody,直接返回一个MappingJackson2JsonView实例即可。

 

2.Session的读取

   如果一个Controller类里同时使用了@SessionAttributes,有个数据绑定的方法上用@ModelAttribute,并且在一个请求处理handler的参数里,用了@ModelAttribute。

   先读取session,如果session没值,那么就执行绑定数据的方法,然后绑定请求数据

   先读取session,如果session有值,那么就跳过绑定数据的方法,然后绑定请求数据

 

 

最后

以上就是聪明大米为你收集整理的Spring boot中使用@SessionAttributes需要注意的地方的全部内容,希望文章能够帮你解决Spring boot中使用@SessionAttributes需要注意的地方所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部