国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring窺探系列之Bean生命周期(100%GPT生成版)

這篇具有很好參考價值的文章主要介紹了Spring窺探系列之Bean生命周期(100%GPT生成版)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

生命周期概覽

Spring Bean 的生命周期可以分為以下階段:

  1. 實例化:Spring 容器根據 Bean 的定義創(chuàng)建一個 Bean 的實例。這個階段主要涉及 Bean 的實例化和依賴注入。

    相關類:InstantiationAwareBeanPostProcessor、BeanFactoryPostProcessor、BeanPostProcessor、BeanWrapper、DefaultListableBeanFactory 等。

  2. 屬性賦值:所有的 Bean 屬性被設置為配置值或者默認值,這個階段主要涉及 Bean 的屬性填充。

    相關類:InstantiationAwareBeanPostProcessor、BeanFactoryPostProcessor、BeanPostProcessor、BeanWrapper、DefaultListableBeanFactory 等。

  3. 初始化前:調用 @PostConstruct 和 InitializingBean 的實現(xiàn)方法,以及自定義的初始化方法。

    相關類:InstantiationAwareBeanPostProcessor、BeanFactoryPostProcessor、BeanPostProcessor、InitializingBean、AbstractAutowireCapableBeanFactory 等。

  4. 初始化后:調用 BeanPostProcessor 的 postProcessAfterInitialization 方法,以及自定義的初始化方法。

    相關類:InstantiationAwareBeanPostProcessor、BeanFactoryPostProcessor、BeanPostProcessor、AbstractAutowireCapableBeanFactory 等。

  5. 銷毀前:調用 @PreDestroy 和 DisposableBean 的實現(xiàn)方法,以及自定義的銷毀方法。

    相關類:DisposableBean、AbstractAutowireCapableBeanFactory 等。

  6. 銷毀:Spring 容器銷毀 Bean 對象,釋放資源。

    相關類:DisposableBean、AbstractAutowireCapableBeanFactory 等。

其中,InstantiationAwareBeanPostProcessor、BeanFactoryPostProcessor、BeanPostProcessor 是 Spring Framework 中常用的擴展點,用于在 Bean 的生命周期中攔截和處理 Bean 對象。AbstractAutowireCapableBeanFactory 是 Spring Framework 中的一個重要實現(xiàn)類,實現(xiàn)了 Bean 對象的創(chuàng)建、屬性注入、初始化和銷毀等功能。DefaultListableBeanFactory 則是 AbstractAutowireCapableBeanFactory 的子類,實現(xiàn)了 Bean 的注冊和查找等功能。

主要類的作用和常用方法的詳細說明

  1. BeanFactoryPostProcessor 接口

該接口的作用是在 Spring 容器初始化之后,但是在 Bean 實例化之前,對 BeanFactory 進行修改。它提供了一個方法 postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory),該方法可以實現(xiàn)對 BeanFactory 的配置元數(shù)據進行修改,例如添加新的 BeanDefinition 等。

常用方法:

  • postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory): 該方法在 BeanFactory 標準初始化之后、任何 bean 被實例化之前被調用??梢酝ㄟ^該方法修改 BeanFactory 的配置元數(shù)據,例如添加新的 BeanDefinition 等。
  1. BeanPostProcessor 接口

該接口的作用是在 Spring 容器完成 Bean 實例化和屬性注入之后,但是在調用 Bean 的初始化方法之前和之后,對 Bean 實例進行自定義的初始化和銷毀操作。它提供了兩個方法 postProcessBeforeInitialization(Object bean, String beanName)postProcessAfterInitialization(Object bean, String beanName),分別對應 Bean 初始化前和初始化后的操作。

常用方法:

  • postProcessBeforeInitialization(Object bean, String beanName): 該方法在 Bean 對象實例化后、依賴注入完成后、初始化方法調用之前被調用。可以在該方法中自定義 Bean 對象的初始化邏輯。

  • postProcessAfterInitialization(Object bean, String beanName): 該方法在 Bean 對象實例化后、依賴注入完成后、初始化方法調用之后被調用。可以在該方法中自定義 Bean 對象的銷毀邏輯。

  1. InstantiationAwareBeanPostProcessor 接口

該接口繼承了 BeanPostProcessor 接口,增加了對 Bean 實例化前的處理方法 postProcessBeforeInstantiation(Class<?> beanClass, String beanName) 和對屬性進行修改的方法 postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName)

常用方法:

  • postProcessBeforeInstantiation(Class<?> beanClass, String beanName): 該方法在 Bean 對象實例化之前被調用,可以在該方法中返回一個代理對象來替代原始的 Bean 對象實例。

  • postProcessAfterInstantiation(Object bean, String beanName): 該方法在 Bean 對象實例化之后、依賴注入完成之后、初始化方法調用之前被調用??梢栽谠摲椒ㄖ懈嬷?Spring 容器是否需要繼續(xù)對該 Bean 對象進行屬性注入和初始化等操作。

  • postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName): 該方法在 Bean 對象的屬性填充之后、初始化方法調用之前被調用??梢栽谠摲椒ㄖ行薷?Bean 對象的屬性值。

  1. InitializingBean 接口

該接口提供了一個方法 afterPropertiesSet(),在 Bean 對象的所有屬性被設置完畢之后調用??梢栽谠摲椒ㄖ凶远x Bean 對象的初始化邏輯。

常用方法:

  • afterPropertiesSet(): 該方法在 Bean 對象的所有屬性被設置完畢之后調用??梢栽谠摲椒ㄖ凶远x Bean 對象的初始化邏輯。
  1. DisposableBean 接口

該接口提供了一個方法 destroy(),在 Bean 對象被銷毀之前調用??梢栽谠摲椒ㄖ凶远x Bean 對象的銷毀邏輯。

常用方法:

  • destroy(): 該方法在 Bean 對象被銷毀之前調用。可以在該方法中自定義 Bean 對象的銷毀邏輯。
  1. AbstractAutowireCapableBeanFactory

該類是 Spring Bean Factory 的一個抽象實現(xiàn),提供了創(chuàng)建 Bean 對象、屬性注入、初始化和銷毀等方法的默認實現(xiàn),可以用于定制自己的 Bean Factory 實現(xiàn)。

常用方法:

  • createBean(Class<T> beanClass): 根據指定的類型創(chuàng)建一個 Bean 對象。

  • doCreateBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args): 根據指定的 BeanDefinition 和構造函數(shù)參數(shù)創(chuàng)建一個 Bean 對象。

  • applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName): 在 Bean 的初始化方法調用之前,對 Bean 進行后置處理。

  • applyBeanPostProcessorsAfterInitialization(Object existingBean, String beanName): 在 Bean 的初始化方法調用之后,對 Bean 進行后置處理。

  • destroyBean(Object bean): 銷毀指定的 Bean 對象,包括調用 DisposableBean 接口的 destroy() 方法和自定義的銷毀邏輯。

  1. AbstractBeanFactory

該類是 BeanFactory 接口的抽象實現(xiàn),提供了創(chuàng)建 Bean 對象、獲取 Bean 對象、Bean 的生命周期管理等方法的默認實現(xiàn)。

常用方法:

  • containsBean(String name): 判斷是否存在指定名稱的 Bean 對象。

  • getType(String name): 獲取指定名稱的 Bean 對象的類型。

  • getBean(String name): 根據指定名稱獲取一個 Bean 對象。

  • getBean(String name, Class<T> requiredType): 根據指定名稱和類型獲取一個 Bean 對象。

  • getBeanDefinition(String beanName): 獲取指定名稱的 BeanDefinition 對象。

  • registerSingleton(String name, Object singletonObject): 注冊一個單例 Bean 對象。

  • destroySingletons(): 銷毀所有的單例 Bean 對象,包括調用 DisposableBean 接口的 destroy() 方法和自定義的銷毀邏輯。

  1. ConfigurableBeanFactory 接口

該接口是 BeanFactory 接口的子接口,增加了對 Bean 的生命周期管理的方法,例如添加 BeanPostProcessor、添加 BeanFactoryPostProcessor 等。

常用方法:

  • addBeanPostProcessor(BeanPostProcessor beanPostProcessor): 添加一個 BeanPostProcessor。

  • addBeanFactoryPostProcessor(BeanFactoryPostProcessor beanFactoryPostProcessor): 添加一個 BeanFactoryPostProcessor。

  • registerAlias(String beanName, String alias): 注冊一個 Bean 別名。

  1. ApplicationContext 接口

該接口是 Spring 應用上下文的核心接口,擴展了 BeanFactory 接口,提供了更多的應用上下文級別的功能,例如事件發(fā)布、國際化支持等。

常用方法:

  • getBean(String name): 根據指定名稱獲取一個 Bean 對象。

  • getBean(Class<T> requiredType): 根據指定類型獲取一個 Bean 對象。

  • publishEvent(ApplicationEvent event): 發(fā)布一個應用事件。

  • getMessage(String code, Object[] args, String defaultMessage, Locale locale): 獲取國際化信息。

釋疑

InstantiationAwareBeanPostProcessorBeanPostProcessor 接口的主要區(qū)別在于方法的調用時機和提供的回調方法的不同。

BeanPostProcessor 接口提供了兩個回調方法 postProcessBeforeInitializationpostProcessAfterInitialization,用于在 Bean 初始化前和初始化后對 Bean 進行自定義的初始化和銷毀操作。

InstantiationAwareBeanPostProcessor 接口繼承了 BeanPostProcessor 接口,并且提供了三個額外的回調方法,用于在 Bean 實例化前、實例化后和屬性填充后對 Bean 進行自定義的處理:

  • postProcessBeforeInstantiation: 在 Bean 實例化之前調用,可以返回一個代理對象來替代原始的 Bean 對象實例。

  • postProcessAfterInstantiation: 在 Bean 實例化之后、依賴注入完成之后、初始化方法調用之前被調用。可以在該方法中告知 Spring 容器是否需要繼續(xù)對該 Bean 對象進行屬性注入和初始化等操作。

  • postProcessPropertyValues: 在 Bean 對象的屬性填充之后、初始化方法調用之前被調用??梢栽谠摲椒ㄖ行薷?Bean 對象的屬性值。

因此,相較于 BeanPostProcessor 接口,InstantiationAwareBeanPostProcessor 接口提供了更多的回調方法,使得我們可以在更多的時機進行自定義的處理。一般情況下,如果只需要在 Bean 的初始化前和初始化后進行自定義的處理,可以直接實現(xiàn) BeanPostProcessor 接口;如果需要在更多的時機進行自定義處理,可以實現(xiàn) InstantiationAwareBeanPostProcessor 接口。文章來源地址http://www.zghlxwxcb.cn/news/detail-555820.html

到了這里,關于Spring窺探系列之Bean生命周期(100%GPT生成版)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【SpringBoot系列】Spring Boot Bean Factory的生命周期 Spring Boot學習大綱,可以留言自己想了解的技術點

    繼續(xù)完成既定的任務,走起 可以概括為以下步驟: 資源加載:Spring Boot 應用程序啟動時,會掃描指定的路徑,加載配置文件和類文件等資源。 配置加載:Spring Boot 會根據配置文件(比如 application.properties)中的配置,創(chuàng)建一個 Environment 對象,用于保存應用程序的配置信息。

    2024年02月05日
    瀏覽(35)
  • Spring bean 生命周期

    Spring bean 生命周期

    在互聯(lián)網領域中,Spring框架扮演著重要的角色。作為一個開源的Java應用程序開發(fā)框架,Spring提供了一種靈活而強大的方式來構建可擴展的應用程序。Spring框架中的一個重要概念是Bean,它是Spring應用程序的基本構建塊之一。了解Spring Bean的生命周期對于充分利用Spring框架的功能

    2024年02月11日
    瀏覽(26)
  • Spring:Bean生命周期

    Spring:Bean生命周期

    Bean 生命周期 是 bean 對象從創(chuàng)建到銷毀的整個過程。 簡單的 Bean 生命周期的過程: 1.實例化(調用構造方法對 bean 進行實例化) 2.依賴注入(調用 set 方法對 bean 進行賦值) 3.初始化(手動配置 xml 文件中 bean 標簽的 init-method 屬性值,來指定調用對應的初始化方法) 4.使用

    2024年02月13日
    瀏覽(27)
  • 【Spring】—— bean生命周期

    1、初始化容器 1)創(chuàng)建對象(分配內存) 2)執(zhí)行構造方法 3)執(zhí)行屬性注入(set操作) 4)執(zhí)行bean初始化方法 2、使用bean 1)執(zhí)行業(yè)務操作 3、關閉/銷毀容器 1)執(zhí)行bean銷毀方法

    2024年02月02日
    瀏覽(29)
  • 【Spring】Bean的作用域與生命周期詳情:請簡述Spring的執(zhí)行流程并分析Bean的生命周期?

    【Spring】Bean的作用域與生命周期詳情:請簡述Spring的執(zhí)行流程并分析Bean的生命周期?

    ?我們都知道,Spring框架為開發(fā)人員提供了很多便捷,這使得開發(fā)人員能夠更加專注于應用程序的核心業(yè)務邏輯,而不需要花費大量時間和精力在技術細節(jié)上。作為一個包含眾多工具方法的IoC容器,存取JavaBean是其極為重要的一個環(huán)節(jié)。本文就對Spring中的Bean的作用域和生命周

    2024年02月12日
    瀏覽(27)
  • 【spring】spring bean的生命周期

    【spring】spring bean的生命周期

    spring bean的生命周期 簡介 本文測試并且介紹了spring中bean的生命周期,如果只想知道結果可以跳到最后一部分直接查看。 一、bean的創(chuàng)建階段 spring中的bean是何時創(chuàng)建的? 在spring中有一個非常重要的注解,叫做**@Scope**,這個注解是用來控制spring中的bean是否是單例的,一般情況

    2024年02月15日
    瀏覽(28)
  • Spring -- Bean的生命周期

    Spring -- Bean的生命周期

    Spring容器在進行實例化時,會將xml配置的bean的信息封裝成一個BeanDefinition對象,Spring根據BeanDefinition來創(chuàng)建Bean對象,里面有很多的屬性用來描述Bean? ?BeanDefinition 中幾個重要方法如下 beanClassName:bean 的類名 initMethodName:初始化方法名稱 properryValues:bean 的屬性值 scope:作用域

    2024年02月15日
    瀏覽(35)
  • Spring Bean的生命周期

    Spring Bean的生命周期

    Bean生命周期的整個執(zhí)行過程描述如下: 1、根據配置情況調用Bean構造方法或工廠方法實例化 Bean。 2、利用依賴注入完成Bean中所有屬性值的配置注入。 3、如果Bean 實現(xiàn)了BeanNameAware 接口,則 Spring調用Bean的setBeanName()方法傳入當前Bean的id值。 4、如果Bean實現(xiàn)了BeanFactoryAware 接口

    2023年04月22日
    瀏覽(36)
  • Spring整理-Spring Bean的生命周期

    Spring?Bean的生命周期涉及多個階段,從Bean的定義到其銷毀。在這個過程中,Spring容器負責創(chuàng)建、初始化、使用和最終銷毀Bean。了解這個生命周期有助于更好地管理Bean的行為和資源使用。 實例化(Instantiation): 容器首先創(chuàng)建Bean的實例。 填充屬性(Populate?Properties): 容器

    2024年01月21日
    瀏覽(32)
  • 【Spring】Spring的Bean的生命周期

    【Spring】Spring的Bean的生命周期

    作者簡介:大家好,我是五度魚,一個普通的Java領域博主,不停輸出Java技術博客和干貨 。 座右銘:鍥而不舍,金石可鏤 。 個人主頁:五度魚學Java的主頁 在 Java 中, Bean 是一個重要的概念,它代表了應用程序中的一個對象。在開發(fā)中,我們經常使用 Bean 來管理對象的生命

    2024年01月16日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包