1. 程式人生 > >Spring註解開發系列(三)---生命週期

Spring註解開發系列(三)---生命週期

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.