Spring学习笔记3-Spring Bean

137 阅读3分钟

spring bean的定义

bean 是构成应用程序的支柱,也是由 Spring IoC 容器管理的。bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象。这些 bean 是由用容器提供的配置元数据创建的,例如可以由 XML 配置文件进行定义。

spring bean的属性

属性 描述
class 这个属性是强制性的,并且指定用来创建 bean 的 bean 类。
name 这个属性指定唯一的 bean 标识符。在基于 XML 的配置元数据中,你可以使用 ID 和/或 name 属性来指定 bean 标识符。
scope 这个属性指定由特定的 bean 定义创建的对象的作用域,它将会在 bean 作用域的章节中进行讨论。
constructor-arg 它是用来注入依赖关系的,并会在接下来的章节中进行讨论。
properties 它是用来注入依赖关系的,并会在接下来的章节中进行讨论。
autowiring mode 它是用来注入依赖关系的,并会在接下来的章节中进行讨论。
lazy-initialization mode 延迟初始化的 bean 告诉 IoC 容器在它第一次被请求时,而不是在启动时去创建一个 bean 实例。
initialization 方法 在 bean 的所有必需的属性被容器设置之后,调用回调方法。它将会在 bean 的生命周期章节中进行讨论。
destruction 方法 当包含该 bean 的容器被销毁时,使用回调方法。它将会在 bean 的生命周期章节中进行讨论。

spring bean的作用域

作用域 描述
singleton(单独) 只存在一个对象实例,在IoC容器创建时则会实例化这种单独实例
prototype(原型,雏形) 每次对bean请求时,容器都会创建一个新的bean实例
request 每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
session 同一个HTTP Session共享一个Bean,不同Session使用不同的Bean,仅适用于WebApplicationContext环境
global-session 一般用于Portlet应用环境,该运用域仅适用于WebApplicationContext环境

作用域选择的经验规则:根据经验,对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。

spring bean的生命周期

注意:bean的后置处理器的类型也是bean,这一类bean用于对其他bean在初始化前后进行额外的处理

生命阶段 行为
bean的定义 定义bean
bean后置处理器(BeanPostProcessor)调用postProcessBeforeInitialization 在bean初始化之前进行前置操作postProcessBeforeInitialization
bean的初始化 调用init-method方法
bean后置处理器(BeanPostProcessor)调用postProcessAfterInitialization 在bean初始化之后进行后置操作postProcessAfterInitialization
bean的使用 使用bean
bean的销毁 调用destroy-method方法

spring bean的继承

bean的继承机制使子bean能够继承或改写父bean的配置信息,也可以添加额外的新的配置信息,其中bean的配置信息包括:构造函数的参数,属性值,容器的具体信息例如初始化方法,静态工厂方法名,等等。

提示:可以创建纯粹的抽象bean模板,以便作为参考模板给其他bean继承或改写,实现方法是将bean的abstract属性设置为true,并且不指定class属性。