此规则将标记满足以下条件的定制注释上 ElementType.TYPE 以外的 @Target 值:
@InterceptorBinding 来注释定制注释。@Interceptor 进行注释的类上使用定制注释。以下是生命周期拦截器注释:
以下示例不符合 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 行为更改。