Spring註解開發系列(三)---生命週期
阿新 • • 發佈:2018-12-11
Bean的生命週期
Spring Bean 的生命週期在整個 Spring 中佔有很重要的位置,掌握這些可以加深對 Spring 的理解。
首先看下生命週期圖:
再談生命週期之前有一點需要先明確:
Spring 只幫我們管理單例模式 Bean 的完整生命週期,對於 prototype 的 bean ,Spring 在建立好交給使用者之後則不會再管理後續的生命週期。
@Bean指定初始化和銷燬方法
實體類:
package com.wang.bean; public class Car { public Car(){ System.out.println("car cons..."); } public void init(){ System.out.println("car init..."); } public void destroy(){ System.out.println("car destroy..."); } }
xml方式:
<bean id="car" class="com.wang.bean.Car" scope="prototype" lazy-init="true" init-method="init" destroy-method="destroy"> </bean>
註解方式:
/** * Bean的生命週期 * ---由容器管理bean的建立,初始化,銷燬 * * 構造,建立物件 * 單例項:在容器啟動的時候建立物件 * 多例項:在每次獲取的時候建立物件 * * 初始化: * 物件建立完成,並賦值好,呼叫初始化方法... * 銷燬: * 單例項:容器關閉時,進行銷燬 * 多例項:容器不會管理這個bean,bean不會銷燬 * 1).使用自定義的初始化和銷燬方法 * 指定init-methdo和destroy-method * * **/ @Configuration public class LifeCycleConfig { //@Scope("prototype") @Bean(initMethod = "init",destroyMethod = "destroy") public Car car(){ return new Car(); } }
Test:
@Test public void test(){ AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(LifeCycleConfig.class); System.out.println("容器建立完成"); annotationConfigApplicationContext.getBean("car");//多例項,獲取bean時呼叫建立物件,容器關閉不會銷燬bean annotationConfigApplicationContext.close();//關閉容器,執行銷燬方法 }
InitializingBean和DisposableBean.