首頁 > Java > java教程 > 主體

您應該使用哪些 Java EE 6 註解來進行 Bean 管理和相依性注入?

Barbara Streisand
發布: 2024-11-19 07:35:02
原創
482 人瀏覽過

Which Java EE 6 Annotations Should You Use for Bean Management and Dependency Injection?

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 類型的各種容器:

  • JSF 託管 Bean:專為 JSF 應用程式設計,它們提供了簡單的 DI 機制。
  • CDI Bean: CDI bean 在 Java EE 6 中引入,擁有高級功能,例如依賴注入、攔截器和對話。
  • EJB:支援遠端或本地存取、狀態管理和非同步處理的交易 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板