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

关于bean

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

更具体地说,一个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引用

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...