它說,在Java's documentation頁面PostConstruct該多PostConstruct方法?
只有一個方法可以用此註釋
進行註釋,但我只是想用註釋一PostConstruct獨立的應用程序的三種方法。沒有編譯錯誤,所有三個都被調用並順利執行。
那麼我錯過了什麼?哪種類可以存在多個PostConstruct註釋?
它說,在Java's documentation頁面PostConstruct該多PostConstruct方法?
只有一個方法可以用此註釋
進行註釋,但我只是想用註釋一PostConstruct獨立的應用程序的三種方法。沒有編譯錯誤,所有三個都被調用並順利執行。
那麼我錯過了什麼?哪種類可以存在多個PostConstruct註釋?
這可能取決於您正在使用的CDI實施。你確實注入了對象,在那裏你有註釋,不是嗎?
我只是WELD,會拋出一個異常嘗試了預期:
WELD-000805: Cannot have more than one post construct method annotated with @PostConstruct for [EnhancedAnnotatedTypeImpl] public class Test
是的,這似乎春天不遵循此限制。我發現代碼來處理這個註釋是InitDestroyAnnotationBeanPostProcessor
,具體方法:
public void invokeInitMethods(Object target, String beanName) throws Throwable {
Collection<LifecycleElement> initMethodsToIterate =
(this.checkedInitMethods != null ? this.checkedInitMethods : this.initMethods);
if (!initMethodsToIterate.isEmpty()) {
boolean debug = logger.isDebugEnabled();
for (LifecycleElement element : initMethodsToIterate) {
if (debug) {
logger.debug("Invoking init method on bean '" + beanName + "': " + element.getMethod());
}
element.invoke(target);
}
}
}
所以,彈簧支撐多PostConstruct