spring bean

bean:

被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的。bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象。这些 bean 是由用容器提供的配置元数据创建的,例如,已经在先前章节看到的,在 XML 的表单中的 定义。

bean 定义包含称为配置元数据的信息,下述容器也需要知道配置元数据:

  • 如何创建一个 bean
  • bean 的生命周期的详细信息
  • bean 的依赖关系
  • 上述所有的配置元数据转换成一组构成每个 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 的生命周期章节中进行讨论。

 

Bean的生命周期:

初始化回调

org.springframework.beans.factory.InitializingBean 接口指定一个单一的方法:

void afterPropertiesSet() throws Exception;

因此,你可以简单地实现上述接口和初始化工作可以在 afterPropertiesSet() 方法中执行,如下所示:

public class ExampleBean implements InitializingBean { public void afterPropertiesSet() { // do some initialization work } }

在基于 XML 的配置元数据的情况下,你可以使用 init-method 属性来指定带有 void 无参数方法的名称。例如:

下面是类的定义:

public class ExampleBean { public void init() { // do some initialization work } }

销毁回调

org.springframework.beans.factory.DisposableBean 接口指定一个单一的方法:

void destroy() throws Exception;

因此,你可以简单地实现上述接口并且结束工作可以在 destroy() 方法中执行,如下所示:

public class ExampleBean implements DisposableBean { public void destroy() { // do some destruction work } }

在基于 XML 的配置元数据的情况下,你可以使用 destroy-method 属性来指定带有 void 无参数方法的名称。例如:

下面是类的定义:

public class ExampleBean { public void destroy() { // do some destruction work } }

如果你在非 web 应用程序环境中使用 Spring 的 IoC 容器;例如在丰富的客户端桌面环境中;那么在 JVM 中你要注册关闭 hook。这样做可以确保正常关闭,为了让所有的资源都被释放,可以在单个 beans 上调用 destroy 方法。

建议你不要使用 InitializingBean 或者 DisposableBean 的回调方法,因为 XML 配置在命名方法上提供了极大的灵活性。

 

init-method="init":bean初始化方法

destroy-method="destroy":bean销毁方法

默认的初始化和销毁方法

如果你有太多具有相同名称的初始化或者销毁方法的 Bean,那么你不需要在每一个 bean 上声明初始化方法和销毁方法。框架使用 元素中的 default-init-method 和 default-destroy-method 属性提供了灵活地配置这种情况,如下所示:

 

 

Spring Bean 后置处理器

BeanPostProcessor:定义回调方法

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(spring,mvc,sping)