bean的定义
形成应用程序的骨干是由Spring IoC容器所管理的对象称为bean。bean被实例化,组装,并通过Spring IoC容器所管理的对象。这些bean由容器提供,例如,在XML的<bean/>定义,已经看到了前几章的形式配置元数据创建。
bean定义包含所需要的容器要知道以下称为配置元数据的信息:
上述所有配置元数据转换成一组的下列属性构成每个bean的定义。
Spring配置元数据
Spring IoC容器完全由在此配置元数据实际写入的格式解耦。有下列提供的配置元数据的Spring容器三个重要的方法:
我们已经看到了基于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"> <!-- A simple bean definition --> <bean id="..." class="..."> <!-- collaborators and configuration for this bean go here --> </bean> <!-- A bean definition with lazy init set on --> <bean id="..." class="..." lazy-init="true"> <!-- collaborators and configuration for this bean go here --> </bean> <!-- A bean definition with initialization method --> <bean id="..." class="..." init-method="..."> <!-- collaborators and configuration for this bean go here --> </bean> <!-- A bean definition with destruction method --> <bean id="..." class="..." destroy-method="..."> <!-- collaborators and configuration for this bean go here --> </bean> <!-- more bean definitions go here --> </beans>
bean的生命周期
Spring bean的生命周期是很容易理解。当一个bean实例化时,它可能需要执行一些初始化把它转换成可用状态。类似地,当bean不再需要,并且从容器中取出,一些清理的工作可能也需要做。
不过,还有把bean背后的实例化和销毁时间之间的场景发生的活动,但是本章将只讨论其中两个是需要在bean的初始化和销毁的时候,重要bean的生命周期回调方法。
要定义安装和拆卸一个bean,我们只是声明了初始化方法和/或销毁,方法的参数<bean>。在init-method属性指定一个方法,是被调用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无参数签名的方法的名称。例如:
<bean id="exampleBean" class="examples.ExampleBean" init-method="init"/>
下面是类的定义:
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无参数签名的方法的名称。例如:
<bean id="exampleBean" class="examples.ExampleBean" destroy-method="destroy"/>
下面是类的定义:
public class ExampleBean { public void destroy() { // do some destruction work } }
如果您在非web应用环境中使用Spring的IoC容器,例如在桌面富客户端环境; 注册关闭钩子在JVM中。这样做可以确保正常关机,并让所有的资源都被释放调用singleton bean上的相关destroy方法。
建议不要使用的InitializingBean或者DisposableBean的回调,因为XML配置提供极大的灵活性在命名你的方法方面。
例如:
使用Eclipse IDE,然后按照下面的步骤来创建一个Spring应用程序:
本文向大家介绍spring中bean的生命周期详解,包括了spring中bean的生命周期详解的使用技巧和注意事项,需要的朋友参考一下 1.Spring IOC容器可以管理bean的生命周期,Spring允许在bean生命周期内特定的时间点执行指定的任务。 2.Spring IOC容器对bean的生命周期进行管理的过程: ① 通过构造器或工厂方法创建bean实例 ② 为bean的属性设置值和对其他
首先简单说一下(以下为一个回答的参考模板) 1、实例化一个Bean--也就是我们常说的new; 2、按照Spring上下文对实例化的Bean进行配置--也就是IOC注入; 3、如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的id值 4、如果这个Bean已经实现了BeanFactoryA
通过构造器或工厂方法创建bean实例; 为bean的属性赋值; 调用bean的初始化方法; 使用bean; 当容器关闭时,调用bean的销毁方法;
本文向大家介绍详解Spring中Bean的生命周期和作用域及实现方式,包括了详解Spring中Bean的生命周期和作用域及实现方式的使用技巧和注意事项,需要的朋友参考一下 前言 在applicationContext.xml中配置完bean之后,Bean的声明周期状态有哪些。生命周期的各个阶段可以做什么。在applicationContext.xml配置bean的作用域有哪些。其中各个作用域代表的
本文向大家介绍Spring Bean的生命周期详细介绍,包括了Spring Bean的生命周期详细介绍的使用技巧和注意事项,需要的朋友参考一下 Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationCont
本文向大家介绍详解Java的Spring框架中bean的注入集合,包括了详解Java的Spring框架中bean的注入集合的使用技巧和注意事项,需要的朋友参考一下 使用value属性和使用<property>标签的ref属性在你的bean配置文件中的对象引用,这两种情况下可以处理单值到一个bean,如果你想通过多元值,如Java Collection类型List, Set, Map 及 Prope