Quarkus 中的上下文传播

问题描述 投票:0回答:1

我使用的是quarkus 3.11.2。我定义了一个名为

ABC
的自定义拦截器。现在我已经在一个名为
MyClass
的类上定义了这个拦截器,该类有
myMethod
,它调用
testMethod
TestClass

TestClass
没有定义这个拦截器,但是当从
TestMethod
调用
myMethod
时,拦截器仍然被调用。我不知道什么时候以及为什么。当我的应用程序在 tommee 中时,这种情况没有发生,而迁移后它发生在 quarkus 中。

这可能是什么原因?

可能的解决方案是什么?我在方法级别而不是类上尝试了拦截器,它也有效。但是有 100 个类使用它,还有 100 个类没有使用它..有一些更简单的解决方案吗?

quarkus cdi
1个回答
0
投票

如果我正确理解你的设置(鉴于只有口头描述),你就会遇到“自我拦截”的情况。也称为拦截自调用。

这里有一个 Quarkus 文档的链接,解释这确实是有意的行为及其作用。

请记住,自调用是否应该被拦截是拦截器/CDI 规范中的灰色区域,不同的实现选择以不同的方式处理这一点。例如 Weld 不支持,而 Quarkus 支持。

据我所知,在给定的框架中没有办法解决它 - 如果需要可移植性,您最好构建代码以使其不允许这样做。

© www.soinside.com 2019 - 2024. All rights reserved.