bean的生命周期

bean的定义
<?xml version="1.0" encoding="UTF-8"?>
<!-- 此引用需要联网才可以 -->
<!-- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd"> -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- 设置为单例模式singleton 原型值设置为prototype -->
<!-- bean初始化方法init-method 依赖注入就可以注释掉-->
<!-- bean销毁 通过destroy-method属性来完成 -->
<!-- <bean id="HelloWorld" class="com.lsw.action.HelloWorld" scope="singleton" init-method="init" destroy-method="cleanup"> -->
<bean id="HelloWorld" class="com.lsw.action.HelloWorld" init-method="init">
<!-- date变量通过依赖注入来完成 -->
<!-- <property name="msg">
<value>Hello World you</value>
</property>
<property name="date">
<bean id="date" class="java.util.Date"/>
</property> -->
</bean>
</beans>

执行报错 cvc-complex-type.3.2.2: Attribute ‘singleton‘ is not allowed to appear in element ‘bean‘.
原因是spring4.0的版本中没有singleton 最新版本默认是scope
<bean id="HelloWorld" class="com.lsw.action.HelloWorld" scope="singleton">
static final String SCOPE_SESSION
Scope identifier for session scope: "session". Supported in addition to the standard scopes "singleton" and "prototype".
See Also: Constant Field Values
bean的初始化
/*
* bean初始化得方法
* 第一种:使用init()来完成初始化工作
* 第二种:实现org.springframework.beans.factory.InitializingBean接口
*/
public void init(){
this.msg = "Welcome to you";
this.date = new Date();
}

public void afterPropertiesSet(){
this.msg = "Welcome to afterPropertiesSet";
this.date = new Date();
}
bean的使用
/*
* bean的使用方式
* 第一种:使用BeanWrapper
* 第二种:使用BeanFactory 这种方法试了之后发现运行报错 给出的解释是不建议使用
* 第种:使用ApplicationContext
*/
/* HelloWorld helloworld = new HelloWorld();
BeanWrapper bw = new BeanWrapperImpl(helloworld);
bw.setPropertyValue("msg", "BeanWrapper");
System.out.println(bw.getPropertyValue("msg"));*/

/* InputStream is = new FileInputStream("config.xml");
BeanFactory factory = new XmlBeanFactory((Resource) is);
HelloWorld hw = (HelloWorld)factory.getBean("HelloWorld");
System.out.println(hw.getMsg() + hw.getDate());*/

ApplicationContext actx = new FileSystemXmlApplicationContext("config.xml");
HelloWorld hw = (HelloWorld)actx.getBean("HelloWorld");
System.out.println(hw.getMsg() + hw.getDate());
//如果不加上此方法,destroy将不会执行
((FileSystemXmlApplicationContext)actx).close();
bean的销毁
/*
* bean销毁
* 第一种:使用destroy-method属性来完成
* 第二种:实现org.springframework.beans.factory.DisposableBean接口
*/
public void cleanup(){
this.msg = "";
this.date = null;
System.out.println("cleanup" + this.msg + this.date);
}

public void destroy() throws Exception {
this.msg = "";
this.date = null;
System.out.println("destroy" + this.msg + this.date);
}

完整的实体类
package com.lsw.action;

import java.util.Date;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

public class HelloWorld implements InitializingBean,DisposableBean{
public String msg = null;
private Date date = null;

/*
* bean初始化得方法
* 第一种:使用init()来完成初始化工作
* 第二种:实现org.springframework.beans.factory.InitializingBean接口
*/
public void init(){
this.msg = "Welcome to you";
this.date = new Date();
}

public void afterPropertiesSet(){
this.msg = "Welcome to afterPropertiesSet";
this.date = new Date();
}

/*
* bean销毁
* 第一种:使用destroy-method属性来完成
* 第二种:实现org.springframework.beans.factory.DisposableBean接口
*/
public void cleanup(){
this.msg = "";
this.date = null;
System.out.println("cleanup" + this.msg + this.date);
}

public void destroy() throws Exception {
this.msg = "";
this.date = null;
System.out.println("destroy" + this.msg + this.date);
}

public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}
}

时间: 2024-12-14 13:34:19

bean的生命周期的相关文章

Spring中Bean的生命周期

Spring中Bean的生命周期过程: 1.Spring对Bean进行实例化(相当于程序中的new Xx()) 2.Spring将值和Bean的引用注入进Bean对应的属性中 3如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给setBeanName()方法 (实现BeanNameAware清主要是为了通过Bean的引用来获得Bean的ID,一般业务中是很少有在Bean的ID的) 4.如果Bean实现了BeanFactoryAware接口,Spring将调用se

IOC容器中bean的生命周期

一.Bean生命周期 Spring IOC容器可以管理Bean的生命周期,允许在Bean生命周期的特定点执行定制的任务. Spring IOC容器对Bean的生命周期进行管理的过程如下: 通过构造器或工厂方法创建Bean实例 为Bean的属性设置值和对其它Bean的引用 调用Bean的初始化方法 Bean可以使用了 当容器关闭时,调用Bean的销毁方法 在 Bean 的声明里设置 init-method 和 destroy-method 属性, 为 Bean 指定初始化和销毁方法. 下面通过示例

Spring容器中Bean的生命周期

日出日落,春去秋来,花随流水,北雁南飞,世间万物皆有生死轮回.从调用XML中的Bean配置信息,到应用到具体实例中,再到销毁,Bean也有属于它的生命周期. 人类大脑对图像的认知能力永远高于文字,因此,闲言少叙,书归正传,上图先: 步骤很多,切莫惊慌,我们可以把上面的步骤归纳如下: 1-2:创建实例: 现在假设spring就是个容器,而配置文件中配置的bean属性才是我们真正需要的东西.创建实例就是说,我把配置文件中的bean信息取出来化作一个真正的bean并放到容器中. 3-4:注入依赖关系:

5.Bean的生命周期

1. Bean 的生命周期: 1). Spring IOC 容器可以管理 Bean 的生命周期, Spring 允许在 Bean 生命周期的特定点执行定制的任务. 2). Spring IOC 容器对 Bean 的生命周期进行管理的过程: <bean id="person" class="com.atguigu.spring.lifecycle.Person" init-method="init" destroy-method="

深入剖析Spring(三)——Bean的生命周期

对于普通的Java对象,当new的时候创建对象,当它没有任何引用的时候被垃圾回收机制回收.而由Spring IoC容器托管的对象,它们的生命周期完全由容器控制.Spring中每个Bean的生命周期如下: 1. 实例化Bean 对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入另一个尚未初始化的依赖时,容器就会调用createBean进行实例化. 对于ApplicationContext容器,当容器启动结束后,便实例化所有的bean. 容器通

Spring中Bean的生命周期方法

Bean的生命周期方法 src\dayday\Car.java package dayday; import com.sun.org.apache.xpath.internal.SourceTree; import javax.sound.midi.Soundbank; /** * Created by I am master on 2016/11/28. */public class Car { private String name; public void setName(String n

Spring4.0学习笔记(5) —— 管理bean的生命周期

Spring IOC 容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务 Spring IOC 容器对Bean的生命周期进行管理的过程: 1.通过构造器或工厂方法创建Bean的实例 2.为Bean的属性设置值和对其他Bean的引用 3.调用Bean的初始化方法 4.Bean可以使用了 5.当容器关闭时,调用Bean的销毁方法 bean文件 package com.spring.cycle; public class Car { public Car(){ S

Spring Bean的生命周期

Bean的初始化过程已经被Spring完全包装起来了,无法人工干预. Spring预留了两个回调方法的入口 回调方法:定义出来完成一定的功能,提供给回调者/服务器/上层容器调用的方法,叫做回调方法. Bean类 public class Bean1 { public Bean1() { //System.out.println("bean1...构造方法"); } public void show(){ System.out.println("bean1...方法"

IOC容器中Bean的生命周期方法

一Spring IOC容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务. 二.Spring IOC容器对Bean的生命周期进行管理的过程: -通过构造器或工厂方法创建Bean的实例 -为Bean的属性设置值和对其他的Bean的引用 -调用Bean的初始化方法 -Bean可以用了 -当容器关闭是吗,调用Bean的销毁方法 三.在bean的声明里设置init-method和destroy-method属性.为Bean指定初始化和销毁方法.

Spring Bean的生命周期(非常详细)

Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring容器.这里,我们讲的也是 ApplicationContext中Bean的生命周期.而实际上BeanFactory也是差不多的,只不过处理器需要手动注册. 转载请注明地址 http://www.cnblogs.com/zrtqsk/p/3735273.html,谢谢. 一.生命周期流程图: Spri