生命周期回调的拦截器只可以声明定义为 @Target(TYPE) 的拦截器绑定类型

此规则将标记满足以下条件的定制注释上 ElementType.TYPE 以外的 @Target 值:

以下是生命周期拦截器注释:

以下示例不符合 Java EE 7 Contexts and Dependency Injection (CDI) 1.2 规范,但在基于 Apache OpenWebBeans 实现的 CDI 1.0 实现中可被接受。在基于 Weld 实现的 CDI 1.2 中,应用程序不会启动。

 @InterceptorBinding @Retention(RetentionPolicy。RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) 公用 @interface MyIInterceptor绑定 {}


@Interceptor @MyIInterceptor绑定公用类 MyIInterceptor {

   @PostActivate
   void postActivate (InvocationContext inv)

   @PreDestroy
   void preDestroy (InvocationContext inv)
}

要解决此问题,请从 @Target 注释中移除 ElementType.METHOD,并移除对应用程序方法上注释的所有引用。 如果指定了 ElementType.TYPE 以外的任何元素类型,那么还必须移除这些元素类型。

有关 Java EE 7 CDI 1.2 实现的更多信息,请参阅 Contexts and Dependency Injection 1.2 行为更改