// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= 使用 CDI 中的注入和限定符
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 使用 CDI 中的注入和限定符 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 使用 CDI 中的注入和限定符

_撰稿人：Andy Gibson_


== 上下文和依赖关系注入

1. link:cdi-intro.html[+CDI 和 JSF 2.0 入门指南+]
2. *使用 CDI 中的注入和限定符*
* <<inject,注入：CDI 中的 "I">>
* <<qualifier,使用限定符>>
* <<alternative,其他注入方法>>
* <<seealso,另请参见>>


. link:cdi-validate.html[+应用 @Alternative Bean 和生命周期标注+]


. link:cdi-events.html[+使用 CDI 中的事件+]

link:http://jcp.org/en/jsr/detail?id=299[+JSR-299+] 指定的上下文和依赖关系注入 (CDI) 是 Java EE 6 的一个组成部分，提供了一个体系结构，以允许 Java EE 组件（例如 Servlet、企业 Bean 和 JavaBeans）在具有明确定义范围的应用程序生命周期内存在。此外，CDI 服务允许 Java EE 组件（例如 EJB 会话 Bean 和 JavaServer Faces (JSF) 受管 Bean）注入并通过触发和观察事件以松散耦合的方式进行交互。

本教程基于 Andy Gibson 发布的博客，标题为：link:http://www.andygibson.net/blog/index.php/2009/12/22/getting-started-with-cdi-part-2-injection/[+CDI 入门指南，第 2 部分 - 注入+]。它演示了如何使用 CDI 注入来将类或接口_注入_至其他类。还显示了如何将 CDI _限定符_应用到代码，以便可以指定应该在给定注入点注入的类类型。

NetBeans IDE 为上下文和依赖关系注入提供了内置支持，包括在项目创建时构建 `beans.xml` CDI 配置文件的选项，为标注提供的编辑器和导航支持，以及用于创建常用 CDI 工件的各种向导。


要学完本教程，您需要具备以下软件和资源。

|===
|软件或资源 |要求的版本 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.2、7.3、7.4、8.0、Java EE 版本 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java 开发工具包 (JDK)+] |版本 7 或 8 

|link:http://glassfish.dev.java.net/[+GlassFish Server+] |Open Source Edition 3.x 或 4.x 

|link:https://netbeans.org/projects/samples/downloads/download/Samples%252FJavaEE%252FcdiDemo.zip[+cdiDemo.zip+] |N/A 
|===

[NOTE]
====
* NetBeans IDE Java 包中还含 GlassFish Server Open Source Edition，后者是与 Java EE 兼容的容器。
* 可以下载本教程的解决方案样例项目：link:https://netbeans.org/projects/samples/downloads/download/Samples%252FJavaEE%252FcdiDemo2.zip[+cdiDemo2.zip+]
====



[[inject]]
== 注入：CDI 中的 "I"

CDI 是一个用于注入上下文和依赖关系的 API。在 Seam 和 Spring 中，依赖关系主要通过命名 Bean 并根据名称将它们绑定到注入点以发挥作用。如果是在完成link:cdi-intro.html[+上下文和依赖关系注入以及 JSF 2.0 入门指南+]以后开始学习本教程，则使用 `@Named` 标注定义 Bean 名称时，仅限从 JSF 页按名称引用受管 Bean。`@Named` 标注的主要作用是定义 Bean，以在应用程序内解析 EL 语句（通常是通过 JSF EL 解析器完成）。_可以_通过使用名称执行注入，但 CDI 注入并非按照此方式工作，因为 CDI 表示注入点和要注入的 Bean 的方式更为丰富。

在以下示例中，将创建 `ItemProcessor`，该程序从实现 `ItemDao` 接口的类获得项列表。使用 CDI 的 `@Inject` 标注演示如何将 Bean _注入_另一个类。下图描绘您在本练习中构建的方案。

image::images/cdi-diagram-inject.png[title="在应用程序中使用 CDI 注入对类进行松散耦合"]

DAO 表示_数据访问对象_。

1. 首先，从 `cdiDemo.zip` 文件提取样例启动项目（请参见上面的<<requiredSoftware,所需资源列表>>）。在 IDE 中打开项目，方法是选择 "File"（文件）> "Open Project"（打开项目）（Ctrl-Shift-O 组合键；在 Mac 上为 ⌘-Shift-O 组合键），然后从计算机上的相应位置选择该项目。
2. 右键单击“项目”窗口中的项目节点，然后选择“属性”。
3. 选择 "Run"（运行）类别，并确认在 "Server"（服务器）下拉列表中选定 GlassFish 实例。
4. 创建新 `Item` 类，并将其存储在名为 `exercise2` 的新包中。单击 "New File"（新建文件）(image:images/new-file-btn.png[]) 按钮，或者按 Ctrl-N 组合键（在 Mac 上为 ⌘-N 组合键）以打开文件向导。
5. 选择 "Java" 类别，然后选择 "Java Class"（Java 类）。单击 "Next"（下一步）。
6. 输入 *Item* 作为类名，然后键入 *exercise2* 作为包。（新包在完成向导时创建。） 

image::images/java-class-wizard.png[title="使用文件向导创建新 Java 类"]



. 单击 "Finish"（完成）。新类和包生成，并在编辑器中打开 `Item` 类。


. 为 `Item` POJO 创建 `value` 和 `limit` 属性，并实现 `toString()` 方法。在该类中添加以下内容。

[source,java]
----

public class Item {

    *private int value;
    private int limit;

    @Override
    public String toString() {
        return super.toString() + String.format(" [Value=%d, Limit=%d]", value,limit);
    }*
}
----


. 在该类中添加 getter 和 setter 方法。要执行此操作，请确保将光标置于类定义之间（例如，该类的花括号之间），然后右键单击编辑器并选择 "Insert Code"（插入代码）（Alt-Insert；在 Mac 上为 Ctrl-I）。选择 "Getter and Setter"（Getter 和 Setter）。 

image::images/insert-code.png[title="使用 "Insert Code"（插入代码）弹出式窗口创建 getter 和 setter"]



. 选中 `Item` 复选框（执行此操作可选择该类中包含的所有属性）。 

image::images/generate-getters-setters.png[title="选中类复选框可选择该类中包含的所有属性"]



. 单击 "Generate"（生成）。将为该类生成 getter 和 setter 方法。

[source,java]
----

public class Item {

    private int value;
    private int limit;

    *public int getLimit() {
        return limit;
    }

    public void setLimit(int limit) {
        this.limit = limit;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }*

    @Override
    public String toString() {
        return super.toString() + String.format(" [Value=%d, Limit=%d]", value, limit);
    }
}
----


. 创建同时具有 `value` 和 `limit` 参数的构造函数。同样，IDE 可以帮助完成此操作。在类定义内按 Ctrl-空格键，并选择 `Item(int value, int limit) - generate` 选项。

image::images/generate-constructor.png[title="按 Ctrl-空格键可利用编辑器的代码完成功能"] 

下列构造函数将添加到类中。

[source,java]
----

public class Item {

    *public Item(int value, int limit) {
        this.value = value;
        this.limit = limit;
    }*

    private int value;
    private int limit;

    ...
----


. 创建 `ItemDao` 接口以定义获取 `Item` 对象列表的方式。在此测试应用程序中，预期将使用多个实现，因此将编写多个接口的代码。

单击 "New File"（新建文件）(image:images/new-file-btn.png[]) 按钮，或者按 Ctrl-N 组合键（在 Mac 上为 ⌘-N 组合键）以打开文件向导。



. 选择 "Java" 类别，然后选择 "Java Interface"（Java 接口）。单击 "Next"（下一步）。


. 键入 *ItemDao* 作为类名，然后输入 *exercise2* 作为包。


. 单击 "Finish"（完成）。将会生成新接口并在编辑器中将其打开。


. 添加名为 `fetchItems()` 的方法，它将返回 `Item` 对象的 `List`。

[source,java]
----

public interface ItemDao {

    *List<Item> fetchItems();*

}
----
（使用编辑器的提示为 `java.util.List` 添加 import 语句。）


. 创建 `ItemProcessor` 类。这是要向其中注入 Bean 并从中执行进程的主类。目前，您将从 DAO 入手，了解如何将其注入我们的处理器 Bean。

单击 "New File"（新建文件）(image:images/new-file-btn.png[]) 按钮，或者按 Ctrl-N 组合键（在 Mac 上为 ⌘-N 组合键）以打开文件向导。



. 选择 "Java" 类别，然后选择 "Java Class"（Java 类）。单击 "Next"（下一步）。


. 键入 *ItemProcessor* 作为类名，然后输入 *exercise2* 作为包。单击 "Finish"（完成）。

将会生成新类并在编辑器中将其打开。



. 修改该类，如下所示：

[source,java]
----

@Named
@RequestScoped
public class ItemProcessor {

    private ItemDao itemDao;

    public void execute() {
        List<Item> items = itemDao.fetchItems();
        for (Item item : items) {
            System.out.println("Found item " + item);
        }
    }
}
----


. 修复导入。在编辑器中右键单击并选择 "Fix Imports"（修复导入），或者按 Ctrl-Shift-I 组合键（在 Mac 上按 ⌘-Shift-I 组合键）。 

image::images/fix-imports.png[title="右键单击编辑器，然后选择 "Fix Imports"（修复导入）以将 import 语句添加到类中"]



. 单击 "OK"（确定）。需要以下类的 import 语句：
* `java.util.List`
* `javax.inject.Named`
* `javax.enterprise.context.RequestScoped`


. 首先是一个简单的 DAO，仅用于创建项列表并返回项的固定列表。

在 "Projects"（项目）窗口中，右键单击 `exercise2` 包节点并选择 "New"（新建）> "Java Class"（Java 类）。在 Java 类向导中，将类命名为 `DefaultItemDao`。单击 "Finish"（完成）。

image::images/java-class-wizard2.png[title="使用 Java 类向导创建新 Java 类"]



. 在编辑器中，让 `DefaultItemDao` 实现 `ItemDao` 接口，然后提供 `fetchItems()` 实现。

[source,java]
----

public class DefaultItemDao *implements ItemDao* {

    *@Override
    public List<Item> fetchItems() {
        List<Item> results = new ArrayList<Item>();
        results.add(new Item(34, 7));
        results.add(new Item(4, 37));
        results.add(new Item(24, 19));
        results.add(new Item(89, 32));
        return results;
    }*
}
----
（按 Ctrl-Shift-I 组合键（在 Mac 上按 ⌘-Shift-I 组合键）为 `java.util.List` 和 `java.util.ArrayList` 添加 import 语句。）


. 切换到 `ItemProcessor` 类（按 Ctrl-Tab 组合键）。为了将 `DefaultItemDao` 注入到 `ItemProcessor`，我们向 `ItemDao` 字段添加 `javax.inject.Inject` 标注以表示该字段为注入点。

[source,java]
----

*import javax.inject.Inject;*
...

@Named
@RequestScoped
public class ItemProcessor {

    *@Inject*
    private ItemDao itemDao;

    ...
}
----

TIP: 使用编辑器的代码完成支持向类中添加 `@Inject` 标注和 import 语句。例如，键入 `@Inj`，按后按 Ctrl-空格组合键。#



. 最后，需要采用一些方式来调用 `ItemProcessor` 上的 `execute()` 方法。此方法可以在 SE 环境中运行，但现在会将其保留在 JSF 页。创建名为 `process.xhtml` 的新页，并包含用于调用 `execute()` 方法的按钮。

单击 "New File"（新建文件）(image:images/new-file-btn.png[]) 按钮，或者按 Ctrl-N 组合键（在 Mac 上为 ⌘-N 组合键）以打开文件向导。


. 选择 "JavaServer Faces" 类别，然后选择 "JSF Page"（JSF 页）。单击 "Next"（下一步）。


. 键入 *process* 作为文件名，然后单击 "Finish"（完成）。 

image::images/new-jsf-page.png[title="使用 JSF 文件向导创建新 Facelets 页"]



. 在新的 `process.xhtml` 文件中，添加连接到 `ItemProcessor.execute()` 方法的按钮。使用 EL 时，受管 Bean 的默认名称与类名称相同，但是第一个字母用小写（例如，`itemProcessor`）。

[source,xml]
----

<h:body>
    *<h:form>
        <h:commandButton action="#{itemProcessor.execute}" value="Execute"/>
    </h:form>*
</h:body>
----


. 运行此项目之前，在项目的 Web 部署描述符中将 `process.xhtml` 文件设置为新的欢迎页面。

使用 IDE 的 "Go to File"（转至文件）对话框快速打开 `web.xml` 文件。从 IDE 的主菜单中选择 "Navigate"(导航)> "Go to File"（转至文件）（Alt-Shift-O；在 Mac 上为 Ctrl-Shift-O），然后键入 "`web`"。 

image::images/go-to-file.png[title="使用 "Go to File"（转至文件）对话框可快速找到项目文件"]



. 单击 "OK"（确定）。在 `web.xml` 文件的 XML 视图中，进行以下更改。

[source,xml]
----

<welcome-file-list>
    <welcome-file>faces/*process.xhtml*</welcome-file>
</welcome-file-list>
----


. 在 IDE 的主工具栏中单击 "Run Project"（运行项目）(image:images/run-project-btn.png[]) 按钮。编译该项目并将其部署到 GlassFish，然后在浏览器中打开 `process.xhtml` 文件。


. 单击页面上显示的 `Execute` 按钮。切换回 IDE 并检查 GlassFish Server 日志。服务器日志会显示在 "Output"（输出）窗口（Ctrl-4 组合键；在 Mac 上为 ⌘-4 组合键）中 "GlassFish Server" 标签的下方。单击该按钮时，日志将列出默认 DAO 实现的项。

image::images/output-window.png[title="在 IDE 的 "Output"（输出）窗口中查看服务器日志"] 


TIP: 在 "Output"（输出）窗口中右键单击，然后选择 "Clear"（清除）（Ctrl-L 组合键；在 Mac 上为 ⌘-L 组合键）以清除日志。在上图中，仅在单击 `Execute` 按钮前清除日志。#

我们创建了一个实现 `ItemDao` 接口的类，然后在部署应用程序时，由 CDI 实现来处理模块中的受管 Bean（由于模块中的 `beans.xml` 文件）。`@Inject` 标注指定要将受管 Bean 注入该字段，而我们只知道可注入 Bean 必须实现 `ItemDao` 或该接口的一些子类型。在这种情况下，`DefaultItemDao` 类非常符合要求。

如果注入了多个 `ItemDao` 实现，会怎么样？CDI 可能不知道应该选择哪个实现，会标记部署时错误。要解决此问题，需要使用 CDI 限定符。限定符将在以下部分进行探讨。



[[qualifier]]
== 使用限定符

CDI 限定符是一个标注，可在类级别应用以表示该类所属的 Bean 类型，还可以在字段级别（在其他位置）应用以表示该点需要注入哪种类型的 Bean。

为了演示在我们构建的应用程序中需要限定符，我们向还会实现 `ItemDao` 接口的应用程序中添加另一个 DAO 类。下图描述了本练习中将要构建的方案。CDI 必须能够确定在注入点应该使用哪个 Bean 实现。因为有两个 `ItemDao` 实现，我们可以通过创建名为 `Demo` 的限定符来解决此问题。然后，使用 `@Demo` 标注对要使用的 Bean 以及 `ItemProcessor` 中的注入点添加“标记”。

image::images/cdi-diagram-qualify.png[title="在应用程序中使用 CDI 注入和限定符对类进行松散耦合"]

请执行以下步骤。

1. 在 "Projects"（项目）窗口中，右键单击 `exercise2` 包，并选择 "New"（新建）> "Java Class"（Java 类）。
2. 在新建 Java 类向导中，将新类命名为 *AnotherItemDao*，然后单击 "Finish"（完成）。将会生成新类并在编辑器中将其打开。
3. 按如下方式修改类，以实现 `ItemDao` 接口，并定义该接口的 `fetchItems()` 方法。

[source,java]
----

public class AnotherItemDao *implements ItemDao* {

    *@Override
    public List<Item> fetchItems() {
        List<Item> results = new ArrayList<Item>();
        results.add(new Item(99, 9));
        return results;
    }*
}
----

请务必为 `java.util.List` 和 `java.util.ArrayList` 添加 import 语句。要执行此操作，请在编辑器中右键单击，然后选择 "Fix Imports"（修复导入），或者按 Ctrl-Shift-I 组合键（在 Mac 上按 ⌘-Shift-I 组合键）。

现在有两个实现 `ItemDao` 的类，因此无法确定要注入哪个 Bean。



. 单击 "Run Project"（运行项目）(image:images/run-project-btn.png[]) 按钮以运行项目。请注意，项目现在无法部署。

您可能只需要保存文件，因为 "Deploy on Save"（在保存时部署）默认为启用状态，IDE 将自动部署项目。



. 在 "Output"（输出）窗口（Ctrl-4 组合键；在 Mac 上为 ⌘-4 组合键）中查看服务器日志。将会显示类似如下的错误消息。

[source,java]
----

Caused by: org.jboss.weld.DeploymentException: Injection point has ambiguous dependencies.
Injection point: field exercise2.ItemProcessor.itemDao;
Qualifiers: [@javax.enterprise.inject.Default()];
Possible dependencies: [exercise2.DefaultItemDao, exercise2.AnotherItemDao]
----

要在 "Output"（输出）窗口中将文本调整为多行，请右键单击并选择 "Wrap text"（自动换行）。此操作不需要水平滚动。

Weld（CDI 实现）提供了一个不明确的依赖关系错误含义，它不能确定为给定注入点使用哪个 Bean。在 Weld 中，CDI 注入可能发生的绝大多数（如果不是所有）错误会在部署时报告，甚至包含钝化 Bean 是否会丢失 `Serializable` 实现。

可以指定 `ItemProcessor` 中的 `itemDao` 字段作为一个特定类型与其中一个实现类型（`AnotherItemDao` 或 `DefaultItemDao`）匹配，因为它只会与一个类类型匹配。但是，以后将不能对接口进行编码，也很难在不更改字段类型的情况下更改实现。查看 CDI 限定符是更好的解决方法。

当 CDI 检查注入点以找到合适的注入 Bean 时，它会同时考虑类类型和任何限定符。在不知道的情况下，我们已经使用了一个名为 `@Any` 的默认限定符。现在需要创建一个 `@Demo` 限定符以应用于 `DefaultItemDao` 实现，以及 `ItemProcessor` 中的注入点。

IDE 提供可用于生成 CDI 限定符的向导。



. 单击 "New File"（新建文件）(image:images/new-file-btn.png[]) 按钮，或者按 Ctrl-N 组合键（在 Mac 上为 ⌘-N 组合键）以打开文件向导。


. 选择 "Context and Dependency Injection"（上下文和依赖关系注入）类别，然后选择 "Qualifier Type"（限定符类型）。单击 "Next"（下一步）。


. 输入 *Demo* 作为类名，然后输入 *exercise2* 作为包名。


. 单击 "Finish"（完成）。新 `Demo` 限定符在编辑器中打开。

[source,java]
----

package exercise2;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import javax.inject.Qualifier;

/**
*
* @author nbuser
*/
@Qualifier
@Retention(RUNTIME)
@Target({METHOD, FIELD, PARAMETER, TYPE})
public @interface Demo {
}
----

接下来，在类级别将此限定符添加到默认 DAO 实现。



. 在编辑器中切换到 `DefaultItemDao`（按 Ctrl-Tab 组合键），然后在类定义上方键入 `@Demo`。

[source,java]
----

*@Demo*
public class DefaultItemDao implements ItemDao {

@Override
public List<Item> fetchItems() {
    List<Item> results = new ArrayList<Item>();
    results.add(new Item(34, 7));
    results.add(new Item(4, 37));
    results.add(new Item(24, 19));
    results.add(new Item(89, 32));
    return results;
}
}
----

TIP: 键入 `@` 后，按 Ctrl-空格键以调用代码完成建议。编辑器识别 `Demo` 限定符并列出 `@Demo` 作为代码完成选项。#



. 单击 "Run Project"（运行项目）(image:images/run-project-btn.png[]) 按钮以运行项目。该项目将构建和部署，且不出现错误。

NOTE: 对于此项修改，可能需要显式运行项目以重新部署应用程序而不是增量部署所做的更改。



. 在浏览器中，单击 `Execute` 按钮，然后返回至 IDE 并检查 "Output"（输出）窗口中的服务器日志。将看到以下输出结果。

[source,java]
----

INFO: Found item exercise2.Item@1ef62a93 [Value=99, Limit=9]
----

输出列出了 `AnotherItemDao` 类中的项。请回想一下，我们对 `DefaultItemDao` 实现进行了标注，但没有对 `ItemProcessor` 中的注入点进行标注。通过向默认 DAO 实现添加 `@Demo` 限定符，使另一个实现更加匹配注入点，因为该实现同时与类型和限定符匹配。当前，`DefaultItemDao` 有 `Demo` 限定符，而注入点上没有，因此降低了适用性。

接下来，将向 `ItemProcessor` 中的注入点添加 `@Demo` 标注。



. 在编辑器中切换到 `ItemProcessor`（按 Ctrl-Tab 组合键），然后进行以下更改。

[source,java]
----

@Named
@RequestScoped
public class ItemProcessor {

@Inject *@Demo*
private ItemDao itemDao;

public void execute() {
    List<Item> items = itemDao.fetchItems();
    for (Item item : items) {
        System.out.println("Found item " + item);
    }
}
}
----


. 在浏览器中，单击 `Execute` 按钮，然后返回至 IDE 并检查 "Output"（输出）窗口中的服务器日志。您会再次看到默认实现 (`DefaultItemDao`) 的输出。

[source,java]
----

INFO: Found item exercise2.Item@7b3640f1 [Value=34, Limit=7]
INFO: Found item exercise2.Item@26e1cd69 [Value=4, Limit=37]
INFO: Found item exercise2.Item@3274bc70 [Value=24, Limit=19]
INFO: Found item exercise2.Item@dff76f1 [Value=89, Limit=32]
----

这是因为现在是根据类型_和_限定符进行匹配，且 `DefaultItemDao` 是唯一同时具有正确类型和 `@Demo` 标注的 Bean。



[[alternative]]
== 其他注入方法

有多种方式可以在注入的类上定义注入点。到目前为止，您对引用注入对象的字段添加了标注。不需要为字段注入提供 getter 和 setter。如果要使用最终字段创建不可变受管 Bean，可以通过使用 `@Inject` 标注对构造函数进行标注，在构造函数中使用注入。然后，可以对构造函数参数应用任何标注以限定要注入的 Bean。（当然，每个参数都有一个类型可帮助限定要注入的 Bean。）Bean 可能只有一个定义了注入点的构造函数，但是可以实现多个构造函数。


[source,java]
----

@Named
@RequestScoped
public class ItemProcessor {

    private final ItemDao itemDao;

    @Inject
    public ItemProcessor(@Demo ItemDao itemDao) {
        this.itemDao = itemDao;
    }
}
----

此外，还可以调用初始化方法，为该方法传递要注入的 Bean。


[source,java]
----

@Named
@RequestScoped
public class ItemProcessor {

    private ItemDao itemDao;

    @Inject
    public void setItemDao(@Demo ItemDao itemDao) {
        this.itemDao = itemDao;
    }
}
----

虽然在上例中使用了 setter 方法进行初始化，但您可以创建任何方法，并使用它对方法调用中任意数量的 Bean 进行初始化。您还可以在一个 Bean 中使用多个初始化方法。


[source,java]
----

@Inject
public void initBeans(@Demo ItemDao itemDao, @SomeQualifier SomeType someBean) {
    this.itemDao = itemDao;
    this.bean = someBean;
}
----

无论注入点是如何定义的，都可以将同样的规则应用于匹配的 Bean。CDI 会尝试根据类型和限定符查找最佳匹配，并且会在注入点有多个匹配 Bean 或没有匹配 Bean 时部署失败。

link:/about/contact_form.html?to=3&subject=Feedback:%20Working%20with%20Injection%20and%20Qualifiers%20in%20CDI[+发送有关此教程的反馈意见+]



[[seealso]]
== 另请参见

请继续完成本系列中关于上下文和依赖关系注入的下一个部分：

* link:cdi-validate.html[+应用 @Alternative Bean 和生命周期标注+]

有关 CDI 和 Java EE 的详细信息，请参见以下资源。

* link:cdi-intro.html[+上下文和依赖关系注入以及 JSF 2.0 入门指南+]
* link:javaee-gettingstarted.html[+Java EE 应用程序入门指南+]
* link:http://blogs.oracle.com/enterprisetechtips/entry/using_cdi_and_dependency_injection[+企业技术提示：在 JSF 2.0 应用程序中使用面向 Java 的 CDI 和依赖关系注入+]
* link:http://download.oracle.com/javaee/6/tutorial/doc/gjbnr.html[+Java EE 6 教程第五部分：面向 Java EE 平台的上下文和依赖关系注入+]
* link:http://jcp.org/en/jsr/detail?id=299[+JSR 299：上下文和依赖关系注入规范+]
