spring 安全策略 MODE_INHERITABLETHREADLOCAL。为什么?

spring security strategy MODE_INHERITABLETHREADLOCAL. Why?

我了解当我们在 Spring 安全策略中使用 MODE_THREADLOCAL 和 MODE_INHERITABLETHREADLOCAL 时如何以及会发生什么。我不明白的是,为什么有人会使用 MODE_THREADLOCAL 而不是 MODE_INHERITABLETHREADLOCAL。

  1. 使用其中一个对内存有影响吗?如果有,是不是 够重要吗?
  2. 使用 MODE_INHERITABLETHREADLOCAL 的典型 business/functional 用例是什么?
  3. 使用一个比另一个有什么不同的性能?
  1. 使用两者对内存的影响可以忽略不计

  2. 在某些环境中,启动新线程来执行后台任务是很常见的。有时开发人员不希望创建的线程自动包含 SecurityContext。在这些情况下,MODE_THREADLOCAL 更可取。如果您代表当前用户启动任务,则可能需要传播 SecurityContext。在这种情况下 MODE_INHERITABLETHREADLOCAL 会更可取。

  3. 两种策略之间的性能可以忽略不计