首頁常見問題正文

spring bean容器的生命周期是什么樣的?

更新時間:2023-09-04 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  Spring容器管理Bean的生命周期,主要分為以下階段:

  1.實例化(Instantiation)

  在這個階段,Spring容器會創(chuàng)建Bean的實例。通常有兩種方式來實例化Bean:通過構(gòu)造函數(shù)實例化和通過工廠方法實例化。構(gòu)造函數(shù)實例化是最常見的方式,Spring通過調(diào)用Bean的構(gòu)造函數(shù)來創(chuàng)建Bean的實例。

  2.屬性注入(Property Injection)

  一旦Bean實例化完成,Spring容器會注入Bean的屬性,這些屬性可以是基本數(shù)據(jù)類型、引用其他Bean或者集合等。

  3.初始化(Initialization)

  初始化階段包括兩個步驟:

  (1)調(diào)用Bean的afterPropertiesSet方法:

  如果Bean實現(xiàn)了InitializingBean接口,Spring容器會在屬性注入后調(diào)用afterPropertiesSet方法,你可以在這個方法中執(zhí)行一些初始化操作。

  (2)執(zhí)行自定義的初始化方法:

  如果在配置中指定了自定義的初始化方法(例如通過XML配置的init-method屬性或者注解中的@PostConstruct注解),Spring容器會在afterPropertiesSet方法之后調(diào)用這個自定義的初始化方法。

  4.Bean可用(Bean is Ready)

  一旦初始化階段完成,Bean就處于可用狀態(tài),可以被其他Bean引用和使用。

  5.銷毀(Destruction)

  Bean的銷毀階段也包括兩個步驟:

  (1)調(diào)用Bean的destroy方法:如果Bean實現(xiàn)了DisposableBean接口,Spring容器會在Bean被銷毀之前調(diào)用destroy方法,你可以在這個方法中執(zhí)行一些清理操作。

  (2)執(zhí)行自定義的銷毀方法:如果在配置中指定了自定義的銷毀方法(例如通過XML配置的destroy-method屬性或者注解中的@PreDestroy注解),Spring容器會在destroy方法之后調(diào)用這個自定義的銷毀方法。

  6.Bean銷毀(Bean Destruction)

  最后,Spring容器會銷毀Bean實例,釋放資源,使其不再可用。

  需要注意的是,Bean的生命周期管理由Spring容器負(fù)責(zé),開發(fā)者可以通過配置來影響B(tài)ean的生命周期,例如定義初始化方法、銷毀方法,以及設(shè)置Bean的作用域等。默認(rèn)情況下,Bean的作用域是單例(Singleton),也就是一個容器中只有一個Bean實例,但可以根據(jù)需要將作用域配置為原型(Prototype)或其他自定義作用域。

分享到:
在線咨詢 我要報名
和我們在線交談!