Spring的生命週期主要包括以下幾個階段:
- 例項化(Instantiation):Spring IoC容器根據配置檔案或註解資訊建立Bean的例項。
- 屬性賦值(Dependency Injection):Spring IoC容器為Bean的屬性設定值,這通常包括依賴注入(DI),即將其他Bean注入到當前Bean中。
- 初始化(Initialization):在Bean的依賴注入完成後,Spring IoC容器會呼叫Bean的初始化方法,例如呼叫Bean的setter方法設定屬性值,或者執行@PostConstruct註解的方法。
- 使用(Using):Bean現在可以被應用程式使用了。如果專案新增了AOP,那麼就會生成代理,如JDK代理、CGlib代理,沒有新增AOP的話,就不會生成代理。
- 銷燬(Destruction):當Bean不再需要時,Spring IoC容器會呼叫Bean的銷燬方法,釋放資源並執行清理操作。如果Bean實現了DisposableBean介面或配置了destroy-method屬性,它們在這個階段會被呼叫。
Spring的生命週期的實現細節涉及多個階段和介面的使用,包括但不限於BeanFactoryPostProcessor等Bean載入過程中的前置和後置處理、InitializingBean介面的呼叫、DestructionAwareBeanPostProcessor介面的實現等。這些階段和介面共同作用,確保了Spring應用程式中的物件能夠按照預期的方式建立、初始化、使用和銷燬。