CDI是帮助将Java EE平台的web层和事务层组合在一起的几个Java EE特性之一。
官方文档地址:https://javaee.github.io/tutorial/toc.html
使用cdi它会自动的帮助你创建变量的实例:
如 你在servlet中有一个变量message,若加上注解@inject它就会在servlet创建时自动的实例化,注入servlet中。
@Inject
private Message message;
这里的message就是一个bean,CDI bean是CDI可以自动实例化,管理和注入以满足其他对象的依赖关系的类。几乎所有Java类都可以由CDI管理和注入。
可以注入以下类型的对象:
-
几乎任何Java类
-
Session beans
-
Java EE resources: 数据源, Java Message Service topics, queues, connection factories等
-
Persistence contexts (Java Persistence API
EntityManager
objects) -
Producer fields
-
Objects returned by producer methods
-
Web service references
-
Remote enterprise bean references
一个 web bean 中,属性、构造器、方法都可以使用@Inject 注入,他们注入的顺序大致如下:
@Inject 注释的构造器,当然构造器的参数可以使用注入。
@Inject 注释的成员变量
@Inject 注释的初始化方法(普通方法),至此实例化过程结束。