更新時(shí)間:2023-09-04 來(lái)源:黑馬程序員 瀏覽量:
Spring容器管理Bean的生命周期,主要分為以下階段:
在這個(gè)階段,Spring容器會(huì)創(chuàng)建Bean的實(shí)例。通常有兩種方式來(lái)實(shí)例化Bean:通過(guò)構(gòu)造函數(shù)實(shí)例化和通過(guò)工廠方法實(shí)例化。構(gòu)造函數(shù)實(shí)例化是最常見(jiàn)的方式,Spring通過(guò)調(diào)用Bean的構(gòu)造函數(shù)來(lái)創(chuàng)建Bean的實(shí)例。
一旦Bean實(shí)例化完成,Spring容器會(huì)注入Bean的屬性,這些屬性可以是基本數(shù)據(jù)類型、引用其他Bean或者集合等。
初始化階段包括兩個(gè)步驟:
(1)調(diào)用Bean的afterPropertiesSet方法:
如果Bean實(shí)現(xiàn)了InitializingBean接口,Spring容器會(huì)在屬性注入后調(diào)用afterPropertiesSet方法,你可以在這個(gè)方法中執(zhí)行一些初始化操作。
(2)執(zhí)行自定義的初始化方法:
如果在配置中指定了自定義的初始化方法(例如通過(guò)XML配置的init-method屬性或者注解中的@PostConstruct注解),Spring容器會(huì)在afterPropertiesSet方法之后調(diào)用這個(gè)自定義的初始化方法。
一旦初始化階段完成,Bean就處于可用狀態(tài),可以被其他Bean引用和使用。
Bean的銷毀階段也包括兩個(gè)步驟:
(1)調(diào)用Bean的destroy方法:如果Bean實(shí)現(xiàn)了DisposableBean接口,Spring容器會(huì)在Bean被銷毀之前調(diào)用destroy方法,你可以在這個(gè)方法中執(zhí)行一些清理操作。
(2)執(zhí)行自定義的銷毀方法:如果在配置中指定了自定義的銷毀方法(例如通過(guò)XML配置的destroy-method屬性或者注解中的@PreDestroy注解),Spring容器會(huì)在destroy方法之后調(diào)用這個(gè)自定義的銷毀方法。
最后,Spring容器會(huì)銷毀Bean實(shí)例,釋放資源,使其不再可用。
需要注意的是,Bean的生命周期管理由Spring容器負(fù)責(zé),開發(fā)者可以通過(guò)配置來(lái)影響B(tài)ean的生命周期,例如定義初始化方法、銷毀方法,以及設(shè)置Bean的作用域等。默認(rèn)情況下,Bean的作用域是單例(Singleton),也就是一個(gè)容器中只有一個(gè)Bean實(shí)例,但可以根據(jù)需要將作用域配置為原型(Prototype)或其他自定義作用域。
【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開發(fā)-Python】畢業(yè)33個(gè)工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開發(fā)-Java】畢業(yè)5個(gè)工作日就業(yè)率98.18%,最高薪資 17.5k*13薪,全班平均薪資9244元
2025-09-19