# 2.1　Spring 配置的可选方案

如第 1 章中所述，Spring 容器负责创建应用程序中的 bean 并通过 DI 来协调这些对象之间的关系。但是，作为开发人员，你需要告诉 Spring 要创建哪些 bean 并且如何将其装配在一起。当描述 bean 如何进行装配 时，Spring 具有非常大的灵活性，它提供了三种主要的装配机制：

* 在 XML 中进行显式配置。
* 在 Java 中进行显式配置。
* 隐式的 bean 发现机制和自动装配。

乍看上去，提供三种可选的配置方案会使 Spring 变得复杂。每种配置技术所提供的功能会有一些重叠，所以在特定的场景中，确定哪种技术最为合适就会变得有些困难。但是，不必紧张 —— 在很多场景下，选择哪种方案很大程度上就是个人喜好的问题，你尽可以选择自己最喜欢的方式。

Spring 有多种可选方案来配置 bean，这是非常棒的，但有时候你必须要在其中做出选择。

这方面，并没有唯一的正确答案。你所做出的选择必须要适合你和你的项目。而且，谁说我们只能选择其中的一种方案呢？Spring 的配置风格是可以互相搭配的，所以你可以选择使用 XML 装配一些 bean，使用 Spring 基于 Java 的配置（JavaConfig）来装配另一些 bean，而将剩余的 bean 让 Spring 去自动发现。

即便如此，我的建议是尽可能地使用自动配置的机制。显式配置越少越好。当你必须要显式配置 bean 的时候（比如，有些源码不是由你来维护的，而当你需要为这些代码配置 bean 的时候），我推荐使用类型安全并且比 XML 更加强大的 JavaConfig。最后，只有当你想要使用便利的 XML 命名空间，并且在 JavaConfig 中没有同样的实现时，才应该使用 XML。

在本章中，我们会详细介绍这三种技术并且在整本书中都会用到它们。现在，我们会尝试一下每种方法，对它们是什么样子的有一个直观的印象。作为 Spring 配置的开始，我们先看一下 Spring 的自动化配置。
