作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
具体来说,可以从具有不同上下文的同一 SpelExpression 上的多个线程安全地调用 getValue(StandardEvaluationContext, Class) 吗?
我看到 Spring Source 的 Gary Russell 提出并回答了这个问题。但是,我也看到有人报告并发问题。我查看了相关 Spring 类的源代码,但不能确定。
我想从与 spring-el 合作过的 Spring 开发人员或在高度并发的环境中使用过此类的 Spring 用户那里得到明确的答案。
谢谢。
最佳答案
我知道你想要另一种意见,但我会澄清它是线程安全的,只要你在另一个线程使用它时不改变它(或者你每次都使用一个新的评估上下文,如果你需要使用变量等对其进行自定义),
但是,您必须将根对象传递给 getValue() 而不是在上下文中设置根对象(使用 setRootObject()
- 这会改变上下文)。如果您有 #root
对象,使用
getValue(EvaluationContext context, Object rootObject, Class<T> expectedResultType)
getValue(EvaluationContext context, Class<T> expectedResultType)
getValue()
称呼。对于需要向上下文添加变量的情况,每个评估都会获得一个新的评估上下文。
关于multithreading - SpelExpression 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24681567/
具体来说,可以从具有不同上下文的同一 SpelExpression 上的多个线程安全地调用 getValue(StandardEvaluationContext, Class) 吗? 我看到 Spri
我正在尝试使用 @PreAuthorize,但需要将其配置为不同的环境具有不同的访问权限,但是当我尝试使用 @PreAuthorize("hasAuthority(#bean)") 时,不会将任何内容
我是一名优秀的程序员,十分优秀!