共计 934 个字符,预计需要花费 3 分钟才能阅读完成。
metadata:元数据
Spring configuration metadata 则是告知 Spring 容器:
如何初始化,配置,包裹,和组合应用内特定的对象。
Spring 从 2002 年发布第一版到至今最新版,提供了三种方式去进行应用配置:
XML-based Configuration: 所有的配置信息存放于多个 XML 文件中,这也是最冗长繁琐的配置方式。超大型项目们,需要配置超大量的 XML 文件。想象下就可知道有多难以管理吧?
Annotation-based Configuration:Spring 2.5 开始引入基于注解的配置方式,我们仍然需要写 XML 文件,但现在只需要告知 Spring 去 ”component-scan” 注解类所在的 package 即可。
Java-based configuration (JavaConfig): 从 3.0 开始,Spring 提供一种纯 Java 代码的配置方式。我们不再需要写大量的 XML 文件了。JavaConfig 方式为依赖注入提供了一种真正的面向对象机制,意味着我们可以在配置代码中充分地使用 Java 语言的可重用性,继承性和多态性。开发者完全掌控了应用中 bean 的初始化和各项依赖注入的关系等等。
在这篇文章中我们只关注如 JavaConfig。熟识其中一种方式已经足够去理解 Spring 容器的关键特性了。
无论我们使用哪种方式,如上图所示,我们只需要在三处地方使用 configuration metadata:
Injection Points:这是各项依赖关系必须被注入的地方。注入点一般都是 bean Class 中的 fields/setters/constructors. Spring 在 bean loading 阶段中把相应的对象实例注入到注入点中。
Service Providers:这是各项 Service 的具体实现类,他们的实例对象会被注入到各个 bean 的 Injection Points 中。这些 Service Providers 类本身会在 Spring Container 中被初始化,并被登记注册为 Spring beans,而且他们自身也可以拥有注入点。
The Configuration:这里是被 @Configuration 注解的 Java 类。同时也是我们定义依赖关系的地方。