请介绍一下Spring框架中Bean的生命周期

2023-07-06   


一、Bean的定义
   Spring通常通过配置文件定义Bean。如:
  
   <?xml version=”1.0″ encoding=”UTF-8″?>
  
  
  
   HelloWorld
  
  
  
  
   这个配置文件就定义了一个标识为 HelloWorld 的Bean。在一个配置文档中可以定义多个Bean。
  
   二、Bean的初始化
   有两种方式初始化Bean。
   1、在配置文档中通过指定init-method 属性来完成
   在Bean的类中实现一个初始化Bean属性的方法,如init(),如:
   public class HelloWorld
   public String msg=null;
   public Date date=null;
  
   public void init()
   msg=”HelloWorld”;
   date=new Date();
  
   ……
  
   然后,在配置文件中设置init-mothod属性:
  
  
  
   2、实现 org.springframwork.beans.factory.InitializingBean接口
   Bean实现InitializingBean接口,并且增加 afterPropertiesSet() 方法:
  
   public class HelloWorld implement InitializingBean
   public String msg=null;
   public Date date=null;
  
   public void afterPropertiesSet()
   msg=”向全世界问好!”;
   date=new Date();
  
   ……
  
  
   那么,当这个Bean的所有属性被Spring的BeanFactory设置完后,会自动调用afterPropertiesSet()方法对Bean进行初始化,于是,配置文件就不用指定 init-method属性了。
  
   三、Bean的调用
   有三种方式可以得到Bean并进行调用:
   1、使用BeanWrapper
   HelloWorld hw=new HelloWorld();
   BeanWrapper bw=new BeanWrapperImpl(hw);
   bw.setPropertyvalue(“msg”,”HelloWorld”);
   system.out.println(bw.getPropertyCalue(“msg”));
  
   2、使用BeanFactory
   InputStream is=new FileInputStream(“config.xml”);
   XmlBeanFactory factory=new XmlBeanFactory(is);
   HelloWorld hw=(HelloWorld) factory.getBean(“HelloWorld”);
   system.out.println(hw.getMsg());
  
   3、使用ApplicationConttext
   ApplicationContext actx=new FleSystemXmlApplicationContext(“config.xml”);
   HelloWorld hw=(HelloWorld) actx.getBean(“HelloWorld”);
   System.out.println(hw.getMsg());
  
   四、Bean的销毁
   1、使用配置文件中的 destory-method 属性
   与初始化属性 init-methods类似,在Bean的类中实现一个撤销Bean的方法,然后在配置文件中通过 destory-method指定,那么当bean销毁时,Spring将自动调用指定的销毁方法。
  
   2、实现 org.springframwork.bean.factory.DisposebleBean接口
   如果实现了DisposebleBean接口,那么Spring将自动调用bean中的Destory方法进行销毁,所以,Bean中必须提供Destory方法。


相关内容:

  1. 请介绍一下Spring框架中Bean的作用域
  2. spring中的BeanFactory与ApplicationContext的作用和区别
  3. EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
  4. EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
  5. Spring面试题集
  6. 请介绍一下Spring的事务管理