2.3 通过 Java 代码装配 bean

尽管在很多场景下通过组件扫描和自动装配实现 Spring 的自动化配置是更为推荐的方式,但有时候自动化配置的方案行不通,因此需要明确配置 Spring。比如说,你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加 @Component 和 @Autowired 注解的,因此就不能使用自动化装配的方案了。

在这种情况下,你必须要采用显式装配的方式。在进行显式配置的时候,有两种可选方案:Java 和 XML。在这节中,我们将会学习如何使用 Java 配置,接下来的一节中将会继续学习 Spring 的 XML 配置。

就像我之前所说的,在进行显式配置时,JavaConfig 是更好的方案, 因为它更为强大、类型安全并且对重构友好。因为它就是 Java 代码, 就像应用程序中的其他 Java 代码一样。

同时,JavaConfig 与其他的 Java 代码又有所区别,在概念上,它与应用程序中的业务逻辑和领域代码是不同的。尽管它与其他的组件一样都使用相同的语言进行表述,但 JavaConfig 是配置代码。这意味着它不应该包含任何业务逻辑,JavaConfig 也不应该侵入到业务逻辑代码之中。尽管不是必须的,但通常会将 JavaConfig 放到单独的包中,使它与其他的应用程序逻辑分离开来,这样对于它的意图就不会产生困惑了。

接下来,让我们看一下如何通过 JavaConfig 显式配置 Spring。