首页 > Java > java教程 > 您应该使用哪些 Java EE 6 注释来进行 Bean 管理和依赖项注入?

您应该使用哪些 Java EE 6 注释来进行 Bean 管理和依赖项注入?

Barbara Streisand
发布: 2024-11-19 07:35:02
原创
544 人浏览过

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

此注解声明由 EJB 容器管理的 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;
  ...
}
登录后复制

JSF:

@ManagedBean(name="myManagedBean")
@RequestScoped
public class MyManagedBean {
  ...
}
登录后复制

选择正确的 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板