Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring会话中,SaveMode和FlushMode有什么区别?_Java_Spring_Spring Session - Fatal编程技术网

Java 在Spring会话中,SaveMode和FlushMode有什么区别?

Java 在Spring会话中,SaveMode和FlushMode有什么区别?,java,spring,spring-session,Java,Spring,Spring Session,Spring会话有两个枚举,一个叫做SaveMode,另一个叫做FlushMode。参考文档没有提到SaveMode和FlushMode。javadoc描述听起来非常相似 保存模式和刷新模式究竟控制什么 需要显式设置SaveMode和Flush模式的用例有哪些 保存模式 /** *支持跟踪会话更改并将其保存到会话存储的模式。 * *@作者罗布·温奇 *@作者维德兰·帕维奇 *@自2.2.0以来 */ 公共枚举保存模式{ /** *仅保存对会话所做的更改,例如使用 *{@link Sessio

Spring会话有两个枚举,一个叫做
SaveMode
,另一个叫做
FlushMode
。参考文档没有提到SaveMode和FlushMode。javadoc描述听起来非常相似

  • 保存模式和刷新模式究竟控制什么
  • 需要显式设置SaveMode和Flush模式的用例有哪些
保存模式

/**
*支持跟踪会话更改并将其保存到会话存储的模式。
*
*@作者罗布·温奇
*@作者维德兰·帕维奇
*@自2.2.0以来
*/
公共枚举保存模式{
/**
*仅保存对会话所做的更改,例如使用
*{@link Session#setAttribute(String,Object)}。在高度并发的环境中,
*此模式最大限度地降低了属性在处理过程中被覆盖的风险
*并行请求。
*/
在集合属性上,
/**
*与{@link#ON_SET_ATTRIBUTE}相同,添加了已修改的保存属性
*使用{@link Session#getAttribute(String)}读取。
*/
在“获取”属性上,
/**
*始终保存所有会话属性,而不考虑与会话的交互。
*在高度并发的环境中,此模式会增加属性被删除的风险
*在处理并行请求期间覆盖。
*/
总是
}
刷新模式

/**
*支持将会话写入会话存储的模式。
*
*@作者罗布·温奇
*@作者维德兰·帕维奇
*@自2.2.0以来
*/
公共枚举刷新模式{
/**
*仅在启用{@link SessionRepository#save(session)}时写入会话存储
*在web环境中,通常在HTTP响应
*这是承诺。
*/
在"拯救"上,,
/**
*尽快写入会话存储。例如
*{@link SessionRepository#createSession()}将会话写入会话存储。
*另一个例子是使用
*{@link Session#setAttribute(String,Object)}也将写入会话存储
*马上。
*/
立即的
}
现在看看:

flushMode
:允许指定何时将数据写入Redis。只有在
ReactiveSessionRepository
上调用save时,才会使用默认设置。
FlushMode.IMMEDIATE的值将尽快写入Redis

浏览源代码,特别是在RedisSession->FlushimeDiateIfEssential()中调用此函数

至于角色,我也在寻找答案