這可能是一個菜鳥問題,但是在很多教程和示例中,我看到這些註釋被用作好像他們做了同樣的事情。JSF2.0中的@Named和@ManagedBean註釋之間的區別Tomcat7
但是我跑進使用一些侷限性@Named
一個(尤其是依賴注入等)我找不到其中的差別解釋的來源,我會非常感激,如果有人可以給當一個粗略概述使用一個或另一個。
這可能是一個菜鳥問題,但是在很多教程和示例中,我看到這些註釋被用作好像他們做了同樣的事情。JSF2.0中的@Named和@ManagedBean註釋之間的區別Tomcat7
但是我跑進使用一些侷限性@Named
一個(尤其是依賴注入等)我找不到其中的差別解釋的來源,我會非常感激,如果有人可以給當一個粗略概述使用一個或另一個。
@Named
給CDI託管bean一個EL名稱,用於視圖技術如JSF或JSP。請注意,在CDI應用程序中,不需要需要使用@Named
註釋來製作由CDI管理的bean(感謝@Karl的評論)。
@ManagedBean
使得由JSF管理bean的,您可以:
看到這個related question欲瞭解更多信息如何注入這兩種豆類之間的作品。
請注意,這些bean的範圍也有所不同。它們來自不同的軟件包,但名稱完全相同(JSF:javax.faces.bean
,CDI:javax.enterprise.context
,所以如果包含錯誤的類別,它通常是錯誤和混淆的來源。因爲它們比JSF管理的bean更加靈活,唯一的缺點是CDI不知道視圖範圍,因此您需要回退到@ManagedBean或使用一些第三方擴展(如Seam)
+1。@matt:我認爲'RequestScoped + KeepAlive = ViewScoped'可以和@命名我是否正確? – Addicted
@Abhinav:KeepAlive從像Richfaces這樣的組件庫? –
非常感謝您的解釋! – user871784
什麼樣的限制? @ @ ManagedBean是'@ Named'的函數的一個子集,所以'@ Named'應該可以在任何地方工作 –