1、简介
CDI - Context Dependency Injection 上下文依赖注入:Java EE 6中定义的规范标准,编号: 。定义了一系列简化Java开发的功能。CDI已经超出一个框架的定义,升华到一种开发模型。这个开发模型不会去限制你必须将代码分为几层,不限制你必须写ORM、持久化、业务代码等,甚至不限制你到底是开发WEB程序还是客户端程序。
CDI的思想来源于几个开源项目:Seam、Guice、Spring However。不过CDI在集合了这几个框架的有点之外,克服了各自的缺点。
CDI只是一个标准( ),不是一个具体的框架,不同的应用服务器有其自己的实现,比如JBoss AS的CDI名叫Weld。
2、注入
既然名称叫做上下文依赖注入,那么首先看看到底是怎么注入的。
· 往哪里注入(3种)
1
|
public class Checkout {
|
2
|
private final ShoppingCart cart;
|
5
|
public Checkout(ShoppingCart cart) {
|
↑ 注入到构造方法。一个类只能有一个注入的构造方法
1
|
public class Checkout {
|
2
|
private ShoppingCart cart;
|
5
|
void setShoppingCart(ShoppingCart cart) {
|
1
|
public class Checkout {
|
2
|
private @Inject ShoppingCart cart;
|
↑ 注入到类属性。不需要getter与setter!
· 注入的顺序:
1)构造方法
2)类属性
3)方法注入
4)@PostConstruct
3、会话范围
1)@RequestScoped
2)@SessionScoped
3)@ApplicationScoped
4)@ConversationScoped
前三种可以在任何servlet中使用,conversation只能在JSF中使用。