不使用 beans.xml 注册 CDI 拦截器

Mir*_*iro 4 cdi weld jakarta-ee

我正在寻找一种以编程方式加载给定拦截器的方法。

我已经看到了一种为给定 bean 动态设置拦截器绑定的方法,但是该绑定的拦截器必须在 beans.xml 中定义。我知道我可以使用@Interceptors注释,但这样我就被绑定到一个特定的实现。

有没有办法加载拦截器(可能通过 CDI 扩展)? 或者一种让拦截器默认启用而无需声明的方法<interceptors></interceptors>

我正在使用 Weld-1.1.24

小智 6

对于像我一样通过搜索来到这里的任何人,并且不限于 CDI 1.0:
您可以向拦截器添加 @Priority() 注释,因此您不必将其添加到 beans.xml

@MyAnnotation @Interceptor @Priority(Interceptor.Priority.LIBRARY_BEFORE)
public class MyAnnotationInterceptor{...}
Run Code Online (Sandbox Code Playgroud)

  • 在这里解释(在最底部):https://docs.oracle.com/javaee/7/tutorial/cdi-adv006.htm - 也适用于 Java EE 8。 (2认同)