在 Spring 框架中,Spring Bean 定义(Spring Bean Definition)描述了一个 Bean 的配置和行为。它通常包含以下几个方面的信息:
- Bean 的 ID 或名称:
- 每个 Bean 都需要一个唯一的标识符(ID),用于在 Spring 容器中引用这个 Bean。
- 例如:
<bean id="myBean" ... />
- Bean 的类型(Class):
- 指定该 Bean 的实现类,用来创建对象的类。
- 例如:
<bean id="myBean" class="com.example.MyBean" />
- Bean 的作用域(Scope):
- Bean 的作用域决定了 Bean 的生命周期和创建方式。常见的作用域有:
singleton
:整个应用上下文中只有一个实例(默认作用域)。prototype
:每次请求都会创建一个新的 Bean 实例。request
:每个 HTTP 请求都会创建一个新的 Bean 实例(Web 应用中使用)。session
:每个 HTTP 会话中会有一个 Bean 实例(Web 应用中使用)。
- 例如:
<bean id="myBean" scope="singleton" />
- 构造函数参数:
- 在 Bean 定义中,可以通过构造函数注入参数(构造器注入)。
- 例如:
<bean id="myBean" class="com.example.MyBean">
可以通过<constructor-arg>
来定义构造函数参数。
- 属性(Property)注入:
- 通过属性注入将外部值传递给 Bean 的成员变量(字段注入)。
- 例如:
<property name="propertyName" value="propertyValue" />
- 初始化方法:
- 在 Bean 创建并属性注入后,Spring 会调用指定的初始化方法。
- 例如:
<bean id="myBean" init-method="init" />
- 销毁方法:
- 在 Bean 销毁之前,Spring 会调用指定的销毁方法。
- 例如:
<bean id="myBean" destroy-method="cleanup" />
- 自动装配(Autowiring):
- 允许自动装配依赖的 Bean,而不需要显式地定义依赖关系。常见的自动装配方式有:
@Autowired
(注解方式,Spring 3.0 后提供)- 通过 XML 配置自动装配:
<bean autowire="byType" />
- 继承关系:
- Spring Bean 可以继承其他 Bean 的属性和配置,通过
parent
属性来定义。 - 例如:
<bean id="childBean" parent="parentBean" />
- 注解配置(如果使用注解方式):
- 例如,使用
@Component
、@Service
、@Repository
等注解来标记 Bean 类。 - 这些注解会在类扫描时自动识别为 Spring Bean。