此規則會標示符合下列條件的自訂註釋中的 @Target 值(而非 ElementType.TYPE):
- 以
@InterceptorBinding 標註自訂註釋。
- 在以
@Interceptor 標註的類別中使用自訂註釋。
- 以自訂註釋標註的類別,在它的其中一個方法中還至少包含一個生命週期攔截程式註釋。
以下是生命週期攔截程式註釋:
- javax.annotation.PostConstruct
- javax.annotation.PreDestroy
- javax.ejb.PostActivate
- javax.ejb.PrePassivate
- javax.interceptor.AroundConstruct
下列範例不符合 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})
public @interface MyIInterceptorBinding {}
@Interceptor
@MyIInterceptorBinding
public class 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 行為變更。