一、Bean的定义 Spring通常通过配置文件定义Bean。如: <?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-2.0.xsd"> <bean id="HelloWorld" class="com.pqf.beans.HelloWorld"> <property name="msg"> <value>HelloWorld</value> </property> </bean> </beans> 这个配置文件就定义了一个标识为 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属性: <bean id="HelloWorld" class="com.pqf.beans.HelloWorld" init-mothod="init" > </bean> 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方法。 |
Spring中Bean的生命周期
最新推荐文章于 2025-03-25 01:15:57 发布