Java EE 6 Bean 管理:@ManagedBean、@Inject 和@Named 綜合指南
Java EE 6 引入了無數依賴bean 管理和注入的註釋,造成了一些混亂。本指南旨在闡明 @javax.annotation.ManagedBean、@javax.inject.Named、@javax.faces.ManagedBean 和 @javax.inject.Inject 的複雜性並建立清晰的使用指南。
了解 Java EE 6 中的 Bean 類型
託管 Bean 是具有生命週期的物件由容器管理。 Java EE 6 具有管理自己的 Bean 類型的各種容器:
何時使用每個註解
@javax.annotation.ManagedBean
此註解容器管理的bean。它用於為 EJB 應用程式建立託管 Bean。
@javax.inject.Named 與 @javax.faces.ManagedBean
這兩個註解都識別可以依名稱引用。 @javax.inject.Named 用於 CDI 和 EJB beans,而 @javax.faces.ManagedBean 專門用於 JSF beans。
@javax .inject.Inject
此註解用於CDI中的依賴注入和 EJB 上下文。它將 bean 注入其他 bean,允許它們存取必要的依賴項。
範例用法
EJB:
@Stateless @ManagedBean public class MyEJB { ... }
CDI:
@Named("myBean") @RequestScoped public class MyBean { @Inject private MyService service; ... }
CDI:
@ManagedBean(name="myManagedBean") @RequestScoped public class MyManagedBean { ... }
JSF:
選擇正確的Bean
永遠不要使用@javax.faces.ManagedBean,除非對於不支持CDI 的 servlet 容器有必要。
使用CDI beans對於大多數場景,除非您需要EJB 的高階功能,例如交易管理或狀態
當您需要存取遠端或本地EJB 、管理分散式事務以及利用高階企業功能時,請使用EJB。
用於 @ViewScoped 支援CDI,考慮使用相容的庫,如接縫面或 MyFaces CODI,或選擇 @ViewAccessScoped 或@ConversationScoped。以上是您應該使用哪些 Java EE 6 註解來進行 Bean 管理和相依性注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!