1. 程式人生 > 其它 >Spring5框架中Bean的生命週期

Spring5框架中Bean的生命週期

技術標籤:spring5springspringjava後端beanioc

首先呢,大家都知道生命週期的概念,就是從一個物件的建立到該物件銷燬的過程。

接下來說一下bean的生命週期

(1)通過構造器建立bean例項(無引數構造)
(2)為bean的屬性設定值和對其他bean引用(呼叫set方法)
(3)呼叫bean的初始化的方法(需要進行配置初始化的方法)
(4)bean可以使用了
(5)當容器關閉時候,呼叫bean的銷燬方法

演示bean生命週期

 public Orders() { 
        System.out.println("第一步 執行無引數構造建立 bean 例項"
); } private String oname; public void setOname(String oname) { this.oname = oname; System.out.println("第二步 呼叫 set 方法設定屬性值"); } //建立執行的初始化的方法 public void initMethod() { System.out.println("第三步 執行初始化的方法"); } //建立執行的銷燬的方法
public void destroyMethod() { System.out.println("第五步 執行銷燬的方法"); } }
<bean id="orders" class="com.spring.Orders"
init-method="initMethod" destroy-method="destroyMethod"> 
    <property name="oname" value="
手機"
>
</property> </bean>

測試類:

 @Test 
    public void testBean3() { 
// ApplicationContext context = 
// new ClassPathXmlApplicationContext("bean4.xml"); 
        ClassPathXmlApplicationContext context = 
                new ClassPathXmlApplicationContext("bean4.xml"); 
        Orders orders = context.getBean("orders", Orders.class); 
        System.out.println("第四步 獲取建立 bean 例項物件"); 
        System.out.println(orders); 
        //手動讓 bean 例項銷燬 
        context.close(); 
    } 

這個時候可以執行測試程式碼。輸出的結果是:
在這裡插入圖片描述
下面還有一種情況,就是bean的後置處理器,bean的生命週期有七步。
(1)通過構造器建立bean例項(無引數構造)
(2)為bean的屬性設定值和對其他bean引用(呼叫set方法)
(3)把bean例項傳遞bean後置處理器的方法postProcessBEforeInitialization
(4)呼叫bean的初始化的方法(需要進行配置初始化的方法)
(5)把bean例項傳遞bean後置處理器的方法postProcessAferInitialization
(6)bean可以使用了
(7)當容器關閉時候,呼叫bean的銷燬方法

演示新增後置處理器效果

1)建立類,實現介面 BeanPostProcessor,建立後置處理器
public class MyBeanPost implements BeanPostProcessor { 
    @Override 
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { 
        System.out.println("在初始化之前執行的方法"); 
        return bean; 
    } 
    @Override 
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { 
        System.out.println("在初始化之後執行的方法"); 
        return bean; 
    } 
} 


<!-- 配置後置處理器-->
<bean id="myBeanPost" class="com.spring5.MyBeanPost">

在這裡插入圖片描述