【Java EE】--Contexts and Dependency Injection(上下文和依赖注入) 02

前端之家收集整理的这篇文章主要介绍了【Java EE】--Contexts and Dependency Injection(上下文和依赖注入) 02前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

关于bean

CDI重新定义了一个bean的概念,超出了其他Java技术(如JavaBeans和Enterprise JavaBeans(EJB))技术的使用。 在CDI中,bean是定义应用程序状态和/或逻辑的上下文对象的源。 如果Java EE组件实例的生命周期可以根据CDI规范中定义的生命周期由容器进行管理,那么它就是一个bean。

更具体地说,一个bean具有以下属性

  • 一个(非空)的一组bean类型
  • 一个(非空)限定词集
  • 范围
  • 可选地,一个bean EL名称
  • 一组拦截器绑定
  • 一个bean实现

bean类型定义了客户端可见类型的bean。 几乎任何Java类型可能是bean的bean类型。
- bean类型可以是一个接口,一个具体的类或一个抽象类,可以被声明为final或具有最终的方法
- bean类型可以是带有类型参数和类型变量的参数化类型。
- bean类型可以是数组类型。 如果元素类型相同,则两个数组类型被认为是相同的。
- bean类型可能是原始类型。 原始类型被认为与其对应的java.lang中的包装器类型相同。
- bean类型可能是原始类型。

关于CDI托管Bean

托管bean由Java类实现,托管bean被称为Java bean类。 如果通过任何其他Java EE技术规范(如JavaServer Faces技术规范)将其定义为托管bean,或者满足以下所有条件,则顶级Java类是托管bean。

  • 它不是一个非静止的内在类。
  • 它是一个具体的类或者注释@Decorator。
  • 它不使用EJB组件定义注释来注释,也不会在ejb-jar.xml中声明为EJB bean类。
  • 它有一个适当的构造函数。 就是说,以下是其中之一。
  • 该类有一个没有参数的构造函数
  • 该类声明一个注释为@Inject的构造函数
    不需要特殊声明(如注释)来定义受管Bean.

作为可注入对象的bean

注入的概念已经成为Java技术的一部分。 由于引入了Java EE 5平台,注释使得可以将资源和其他类型的对象注入到容器管理的对象中。 CDI使得可以注入更多种类的对象并将其注入到不是容器管理的对象中。
可以注入以下几种对象:

  • (几乎)任何Java类
  • 会话bean
  • Java EE资源:数据源,Java消息服务主题,队列,连接工厂等
  • 持久性上下文(Java Persistence API EntityManager对象)
  • 生产者领域
  • 由生产者方法返回的对象
  • Web服务引用
  • 远程企业bean引用

猜你在找的设计模式相关文章