gpt4 book ai didi

java - CDI 拦截器作用域注解

转载 作者:搜寻专家 更新时间:2023-11-01 03:50:33 24 4
gpt4 key购买 nike

上下文:

Wildfly 8.1.0CDI 1.2

根据CDI1.2CDI规范,如果有注解,则不需要在beans.xml中声明cdi @Priority(somepriorityvalue)

但是,除非我添加 @Dependent 注释,否则永远不会调用以下 cdi 拦截器

@RequiresLoggedInAccount
@Interceptor
@Priority(Interceptor.Priority.APPLICATION)
public class MyInterceptor {

@AroundInvoke
public Object intercept(final InvocationContext ic) throws Exception {
//intercept something and then...
return ic.proceed();
}
}

和拦截器绑定(bind):

@Inherited
@Documented
@InterceptorBinding
@Target({METHOD, TYPE})
@Retention(RUNTIME)
public @interface RequiresLoggedInAccount {
}

请注意,拦截器绑定(bind)和拦截器是在与使用它们的地方不同的 jar 模块中定义的(因此 @Priority 的用途)。

这是我忽略了什么吗?为什么我必须为拦截器添加 CDI@Dependent 作用域?

是不是因为我在beans.xml bean-discovery-mode="annotated"

里特别说明了

最佳答案

WildFly 8.1 附带 Weld 2.1.x(我忘了 x,但 2.1 是 CDI 1.1 兼容的)。您可以对其应用补丁以升级到符合 CDI 1.2 的 Weld 2.2,此问题应该会为您解决。

您看到的行为与 CDI 1.1 实现一致。

关于java - CDI 拦截器作用域注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29805876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com