Spring中Bean的生命周期
1-2 创建实例
现在假设spring就是个容器,而配置文件中配置的bean属性才是我们真正需要的东西。创建实例就是说,我把配置文件中的bean信息取出来化作一个真正的bean并放到容器中。
3-4 注入依赖关系
第3步是创建实例之后对实例作了一些处理,第4步是把xml中配置的bean属性值赋予给容器中的实例化之后的bean。
5 bean初始化之前的处理
应用开发者需要把容器中实例化的bean拿出来用,这个拿出来的过程就是初始化,第五步就是在初始化之前,对已经实例化的bean再作一定的处理。
6-7 初始化
如果bean实现了InitializingBean,那么将调用InitializingBean的afterPropertiesSet()方法做一些初始化处理。如果没有实现InitializingBean,而是在配置文件中定义了init-method属性值,那么系统会找到init-method对应的方法并执行之,程序猿哥哥一般在这个方法里写一些初始化操作;
8 bean初始化之后的处理
初始化之后在这个方法中再对bean进行修饰装点。
9-10 交给应用开发人员处理
如果在中指定Bean的作用范围是scopt=“prototype”,那么系统将bean返回给调用者,spring就不管了(如果两个实例调用的话,每一次调用都要重新初始化,一个实例的修改不会影响另一个实例的值。如果指定Bean的作用范围是scope=“singleton”,则把bean放到缓冲池中,并将bean的引用返回给调用者。这个时候,如果两个实例调用的话,因为它们用的是同一个引用,任何一方的修改都会影响到另一方。)
11 bean用完之后
对于scope="singleton"的bean,使用完之后spring容器会做一些处理,比如编写释放资源、记录日志等操作。
12 销毁
调用配置文件中的销毁方法销毁实例。