Spring - Bean 定义
构成应用程序骨干并由 Spring IoC container 管理的对象称为 beans。Bean 是一个由 Spring IoC container 实例化、组装和管理的对象。这些 beans 是使用您提供给 container 的配置元数据创建的。例如,以 XML <bean/> 定义的形式,您已在之前的章节中见过。
Bean 定义包含称为 配置元数据 的信息,container 需要这些信息来了解以下内容 −
如何创建 bean
Bean 的生命周期细节
Bean 的依赖关系
Bean 属性
上述所有配置元数据会转换为以下属性集,这些属性构成了每个 bean 定义。
| 序号 | 属性 & 描述 |
|---|---|
| 1 |
class 此属性是必填的,用于指定创建 bean 时使用的 bean class。 |
| 2 |
name 此属性唯一指定 bean 标识符。在基于 XML 的配置元数据中,您使用 id 和/或 name 属性来指定 bean 标识符。 |
| 3 |
scope 此属性指定从特定 bean 定义创建的对象的作用域,将在 bean scopes 章节中讨论。 |
| 4 |
constructor-arg 用于注入依赖关系,将在后续章节中讨论。 |
| 5 |
properties 用于注入依赖关系,将在后续章节中讨论。 |
| 6 |
autowiring mode 用于注入依赖关系,将在后续章节中讨论。 |
| 7 |
lazy-initialization mode 延迟初始化的 bean 告诉 IoC container 在首次请求时创建 bean 实例,而不是在启动时创建。 |
| 8 |
initialization method 在 container 设置 bean 的所有必要属性之后立即调用的回调。将会在 bean 生命周期章节中讨论。 |
| 9 |
destruction method 当包含 bean 的 container 被销毁时使用的回调。将会在 bean 生命周期章节中讨论。 |
Spring 配置元数据
Spring IoC 容器完全与配置元数据的实际书写格式解耦。以下是向 Spring 容器提供配置元数据的三种重要方法 −
基于 XML 的配置文件。
基于注解的配置。
基于 Java 的配置。
你已经见过如何向容器提供基于 XML 的配置元数据,但让我们再看一个包含不同 bean 定义的基于 XML 的配置文件示例,包括延迟初始化、初始化方法和销毁方法 −
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 一个简单的 bean 定义 -->
<bean id = "..." class = "...">
<!-- 此 bean 的协作者和配置放在这里 -->
</bean>
<!-- 一个启用了延迟初始化的 bean 定义 -->
<bean id = "..." class = "..." lazy-init = "true">
<!-- 此 bean 的协作者和配置放在这里 -->
</bean>
<!-- 一个带有初始化方法的 bean 定义 -->
<bean id = "..." class = "..." init-method = "...">
<!-- 此 bean 的协作者和配置放在这里 -->
</bean>
<!-- 一个带有销毁方法的 bean 定义 -->
<bean id = "..." class = "..." destroy-method = "...">
<!-- 此 bean 的协作者和配置放在这里 -->
</bean>
<!-- 更多 bean 定义放在这里 -->
</beans>
你可以查看 Spring Hello World 示例来了解如何定义、配置和创建 Spring Bean。
我们将在单独的一章中讨论基于注解的配置。之所以有意将其放在单独一章中,是因为我们希望你在开始使用注解进行 Spring 依赖注入编程之前,先掌握一些其他重要的 Spring 概念。