91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring?BeanFactory與FactoryBean的區別是什么

發布時間:2022-05-05 10:28:28 來源:億速云 閱讀:122 作者:zzz 欄目:開發技術

這篇文章主要介紹了Spring BeanFactory與FactoryBean的區別是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Spring BeanFactory與FactoryBean的區別是什么文章都會有所收獲,下面我們一起來看看吧。

    前言:

    在 Spring 中, IOC 是很重要的概念,其本質就是 map 結構,存儲容器和業務 Bean 信息。但是 BeanFactory 和 FactoryBean 的區別卻是一個很重要的知識點,在本文中將結合源碼進行分析講解。

    區別和聯系

    BeanFactory

    在 Spring 中,所有的 Bean 都是由 BeanFactory (也就是 IOC 容器)來進行管理的。BeanFactory 定義了容器的基本形式,并規定了 IOC 容器的基本接口以及生命周期,針對 BeanFactory 的實現類也有很多,比如ApplicationContextDefaultListableBeanFactoryXmlBeanFactory 都是其添加了附加功能的接口。BeanFactory 創建的 Bean 對象需要遵循以下的生命周期形式,并且 Bean 的生產都是通過反射機制來實現的。

    在英文中,Aware 是意識的意思,可以看到 BeanFactory 的生命周期流程包含了諸多的 Aware 接口:

    Spring?BeanFactory與FactoryBean的區別是什么

    以下為 BeanFactory 接口生命周期相關的一下方法,在項目開發中,ApplicationContextAwareInitializingBean 和 DisposableBean 有這廣泛的應用。

    • BeanNameAware.setBeanName 用于設置 Bean 的名稱

    • BeanClassLoaderAware.setBeanClassLoader 設置類加載器

    • BeanFactoryAware.setBeanFactory 設置 bean 工廠

    • ResourceLoaderAware.setResourceLoader 設置資源加載器

    • ApplicationEventPublisherAware.setApplicationEventPublisher 設置事件發布器

    • MessageSourceAware.setMessageSource 設置信息資源

    • ApplicationContextAware.setApplicationContext 設置應用上下文

    • ServletContextAware.setServletContext 設置 Servlet 上下文

    • BeanPostProcessor.postProcessBeforeInitialization 前置處理器

    • InitializingBean.afterPropertiesSet Bean 初始化操作

    • RootBeanDefinition.getInitMethodName 設置Bean 的初始化方法名稱

    • BeanPostProcessor.postProcessAfterInitialization 后置處理器

    • DisposableBean.destroy 設置 Bean 銷毀

    • RootBeanDefinition.getDestroyMethodName 獲取 Bean 銷毀的方法

    默認情況下,如果直接調用 getBean 方法,將會返回一個工廠創造的對象,如果想獲取 Bean 本身,那么需要添加 & 符號作為前綴進行處理。

    Spring?BeanFactory與FactoryBean的區別是什么

    FactoryBean

    但是在某些具體的情況下,實例化 Bean 的操作會很復雜,按照其要求需要配置大量的屬性,此時 Bean 的配置靈活性就受到了限制,此時就需要使用到 FactoryBean 了,該接口可以按照用戶的需求來構造 Bean 對象,而不再遵守 Bean 生命周期的流程。Spring 自身就提供了很多 FactoryBean 的實現, 它們隱藏了實例化的一系列復雜細節,給上層應用帶來了便利。自從 Srping3.0 開始 FactoryBean 開始支持泛型,即接口聲明改為 FactoryBean<T> 的形式,在 FactoryBean 的應用中,SqlSessionFactoryBean 就是很好的實踐,在操作數據庫的過程中,提供了創建 SqlSession 的工廠 Factory。 

    Spring?BeanFactory與FactoryBean的區別是什么

    關于“Spring BeanFactory與FactoryBean的區別是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Spring BeanFactory與FactoryBean的區別是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    瑞安市| 罗江县| 弥渡县| 古丈县| 米泉市| 托里县| 綦江县| 梧州市| 铜陵市| 怀安县| 高清| 钟山县| 阳山县| 宁波市| 家居| 长寿区| 延边| 吴江市| 牟定县| 涟水县| 邹平县| 九龙坡区| 海城市| 东明县| 嵊州市| 通许县| 万安县| 郁南县| 冷水江市| 孝感市| 安丘市| 拉孜县| 南华县| 潞西市| 海盐县| 石柱| 镇安县| 吉首市| 南平市| 崇文区| 利川市|