bean的生命周期
1、创建应用上下文时会将xml文件中声明的bean全部实例化,放在内存容器中。可以使用lazy-init=true来设置当使用到该bean时才实例化bean
spring bean在 ApplicationContext context = new ClassPathXmlApplicationContext("foo.xml");
2、spring将值和bean的引用注入进bean对应的属性中;
3、将bean的id传递给setBeanName(),
4、将beanFactory容器实例传入setBeanFactory(),
5、将应用上下文的引用传入setBeanApplicationContext()
6、bean准备就绪,可以被应用程序使用,将一直驻留在应用上下文中,直到该应用上下文被销毁
bean的初始化和销毁
为bean定义初始化和销毁操作,只需要使用init-method,destory-method参数来配置<bean>元素。
<bean id="audit" class="com.zju.shine.Audit" init-method="init" destory-method="destory" />
ApplicationContext容器会预装入所有的单例bean,确保需要的时候单例bean都已经准备好了,这样我们的应用就不需要等待这些单例bean被创建。
如果在bean配置中指定bean的作用范围scope="prototype"(非单例模式,每次调用都产生一个新的bean),会将bean返回给调用者,调用者负责bean后续生命周期的管理,spring不再管理这些bean的生命周期。
如果作用范围为scope="singleton"(单例模式,每次调用的是同一个bean),则将bean放入Spring的Ioc容器的缓存池中,并将bean引用返回给调用者,Spring继续对这些bean进行后续的生命周期管理