Spring(12) BeanFactory 和 ApplicationContext 區別

目錄

    • 一、BeanFactory 和 ApplicationContext 區別?
    • 二、既然 Spring Boot 中使用的是 ApplicationContext 進行應用程序的啟動和管理,那么 Spring Boot 會用到 BeanFactory 嗎?

一、BeanFactory 和 ApplicationContext 區別?

BeanFactoryApplicationContext 是 Spring 框架中兩個重要的容器接口,它們之間有以下區別:

  1. 功能:
    • BeanFactory 是 Spring 框架的基礎接口,提供了最基本的 IOC 容器功能。它的主要作用是管理和提供應用程序中的 Bean 實例,通過管理 Bean 的生命周期,實現依賴注入和控制反轉等功能。
    • ApplicationContext 是 BeanFactory 的子接口,具有更多的擴展和增強共嗯那個。ApplicationContext 除了具備 BeanFactory 的功能外,還提供了國際化、資源管理、事件發布和處理、AOP 和事務管理等高級功能。
  2. 初始化方式:
    • 在 Spring 的啟動過程中,BeanFactory 是懶加載的,只有當需要獲取 Bean 時才會進行實例化和初始化。
    • ApplicationContext 在容器啟動時就會進行實例化和初始化,提前創建和管理所有的 Bean 實例。
  3. 配置方式:
    • BeanFactory 可以通過編程的方式進行配置,手動創建容器并根據需要注冊和配置 Bean。
    • ApplicationContext 可以通過多種方式進行配置,包括 XML 配置文件、Java 注解和 JavaConfig 等方式,更加靈活和方便。

在 Spring 的啟動過程中,使用 ApplicationContext 比 BeanFactory 更加常見。通常,Spring Boot 會使用 ApplicationContext 進行應用程序的啟動和管理。在啟動過程中,Spring Boot 會通過掃描注解和加載配置文件等方式,創建 ApplicationContext 實例,并且進行初始化和自動配置。一旦 ApplicationContext 初始化完成,Spring Boot 會使用它來管理和協調應用程序中的各個組件,并提供相關的功能和服務。


二、既然 Spring Boot 中使用的是 ApplicationContext 進行應用程序的啟動和管理,那么 Spring Boot 會用到 BeanFactory 嗎?

會用到。盡管 Spring Boot 主要使用 ApplicationContext 進行應用程序的啟動和管理,但它仍然內部使用 BeanFactory 來支持其核心功能。

在 Spring Boot 的啟動過程中,會創建一個根據類路徑和配置文件自動配置的 ApplicationContext 實例。這個 ApplicationContext 實例實際上是一個 BeanFactory 的實現,并且擁有 BeanFactory 的功能。在創建 ApplicationContext 實例時,Spring Boot 會將必要的配置文件加載到 BeanFactory 中,并根據這些配置來創建和管理 Bean 實例。

整理完畢,完結撒花~ 🌻

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/34881.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/34881.shtml
英文地址,請注明出處:http://en.pswp.cn/news/34881.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

git clone使用https協議報錯OpenSSL SSL_read: Connection was reset, errno 10054

在使用git 下載github上的代碼時, 一般有ssh協議和https協議兩種。使用ssh協議可以成功clone代碼, 但使用https協議時出錯: $ git clone https://github.com/openai/improved-diffusion.git Cloning into improved-diffusion... fatal: unab…

vue或uniapp使用pdf.js預覽

一、先下載穩定版的pdf.js,可以去官網下載 官網下載地址 或 pdf.js包下載(已配置好,無需修改) 二、下載好的pdf.js文件放在public下靜態文件里, uniapp是放在 static下靜態文件里 三、使用方式 1. vue項目 注意路徑 :src"static/pd…

每日一題 206反轉鏈表

題目 給你單鏈表的頭節點 head ,請你反轉鏈表,并返回反轉后的鏈表。 示例 1: 輸入:head [1,2,3,4,5] 輸出:[5,4,3,2,1]示例 2: 輸入:head [1,2] 輸出:[2,1]示例 3: …

塊、行內塊水平垂直居中

1.定位實現水平垂直居中 <div class"outer"><div class"test inner1">定位實現水平垂直居中</div></div><style>.outer {width: 300px;height: 300px;border: 1px solid gray;margin: 100px auto 0;position: relative;}.te…

途樂證券-新股行情持續火爆,哪些因素影響首日表現?

全面注冊制以來&#xff0c;參加打新的投資者數量全體呈現下降。打新收益下降&#xff0c;破發頻出的布景下&#xff0c;投資者打新策略從逢新必打逐步向優選個股改變。 經過很多歷史數據&#xff0c;從商場定價、參加者熱度以及機構重視度維度揭秘了上市后股價體現優秀的個股具…

在多頁面應用和單頁面應用中(例如vue)怎么提高seo搜索引擎優化

那么 我們要先知道 搜索引擎是怎么工作的&#xff1f; 搜索引擎是通過一系列步驟來工作的&#xff0c;以下是其基本原理&#xff1a; 1、網絡爬蟲&#xff1a;搜索引擎使用網絡爬蟲&#xff08;也稱為蜘蛛、機器人&#xff09;來從互聯網上抓取網頁。網絡爬蟲按照預定義的規則…

Redis 之 緩存預熱 緩存雪崩 緩存擊穿 緩存穿透

目錄 一、緩存預熱 1.1 緩存預熱是什么&#xff1f; 1.2 解決方案&#xff1a; 二、緩存雪崩 2.1 緩存雪崩是什么&#xff1f;怎么發生的&#xff1f; 2.2 怎么解決 三、緩存穿透 3.1 是什么&#xff1f;怎么產生的呢&#xff1f; 3.2 解決方案 3.2.1、采用回寫增強&a…

Ceph入門到精通-分布式存儲產品的測試實踐

分布式存儲產品的測試實踐 在分布式存儲產品的測試過程中&#xff0c;測試到底做了些什么事情呢&#xff1f; 一&#xff1a;測試工作內容 需求&#xff0c;設計評審 測試需要參與到每一個過程中 在設計評審的時候就需要知道驗收的標準&#xff0c;這是最重要的開始。因為這…

SpringBoot基礎之注冊Servlet三大組件

文章目錄 前言一、介紹二、注入Bean2.1.ServletRegistrationBean2.2.FilterRegistrationBean2.3.ServletListenerRegistrationBean 三.演示結果總結 前言 本文章將介紹SpringBoot注冊Servlet的三大組件 一、介紹 由于SpringBoot默認是以jar包的方式運行嵌入式Servlet容器來啟…

Protues如何安裝下載使用:STM32利用Protues進行仿真

文章目錄&#xff1a; 一&#xff1a;Proteus仿真的使用步驟 第一步&#xff1a;Proteus新建項目 第二步&#xff1a;Proteus設計電路圖&#xff08;選取元器件、擺放元器件、編輯元器件屬性、原理圖布線&#xff09; 第三步&#xff1a;程序代碼編寫 第四步&#xff1a;…

窺孔優化(Peephole Optimization)

窺孔優化&#xff08;Peephole Optimization&#xff09;是編譯器中的一個技術&#xff0c;用于優化生成的中間代碼或目標代碼。該優化方法通過查看代碼的小部分&#xff08;或稱為“窺孔”&#xff09;來識別并提供更高效的代碼替代方案。 1. 基本概念 定義&#xff1a;窺孔優…

如何在CSS中水平居中一個元素?

聚沙成塔每天進步一點點 ? 專欄簡介? 使用 margin: 0 auto? 使用 Flexbox 布局? 使用絕對定位和負邊距? 使用表格布局? 使用網格布局? 寫在最后 ? 專欄簡介 前端入門之旅&#xff1a;探索Web開發的奇妙世界 記得點擊上方或者右側鏈接訂閱本專欄哦 幾何帶你啟航前端之旅…

Vue組件的邊界情況

01.$root&#xff1b; 訪問組件的根實例&#xff1b;用的不多&#xff0c;基本上在vuex上進行數據操作&#xff1b; 02.$parent/$children; 可以獲得父組件或者子組件上邊的數據&#xff1b;一般不建議使用$parent,因為如果獲取這個值進行修改的話&#xff0c;也會更改父組件上…

VUE3組件

組件基礎 {#components-basics} 組件允許我們將 UI 劃分為獨立的、可重用的部分&#xff0c;并且可以對每個部分進行單獨的思考。在實際應用中&#xff0c;組件常常被組織成層層嵌套的樹狀結構&#xff1a; 這和我們嵌套 HTML 元素的方式類似&#xff0c;Vue 實現了自己的組件…

《使用 VMware 在 Windows 上搭建 Linux 系統的完整指南》

《使用 VMware 在 Windows 上搭建 Linux 系統的完整指南》 1、準備工作1.1 安裝 VMware 軟件1.2 下載 Linux 發行版鏡像文件1.3 安裝SSH工具 2、創建新的虛擬機2.1 VMware頁面2.2 打開VMware頁面并點擊創建新的虛擬機&#xff0c;選擇自定義2.3 選擇系統兼容性&#xff0c;默認…

微信小程序讀取本地json

首先在項目錄下新建【server】文件夾&#xff0c;新建data.js文件&#xff0c;并定義好json數據格式。如下&#xff1a; pages/index/index.ts導入data.js并請求json pages/index/index.wxml頁面展示數據

Vue關閉語法檢查

在創建項目的時候&#xff0c;如果不小心開啟了 eslint 語法檢查&#xff0c;就會導致頁面經常報錯。 eslint 是一個 JavaScript 的效驗插件&#xff0c;用來效驗語法和代碼的書寫風格。 eslint 可以規范開發人員的代碼。但是有些像縮進、空格、空行之類的規范&#xff0c;在…

PHP實踐:分布式場景下的Session共享解決方案實現

&#x1f3c6;作者簡介&#xff0c;黑夜開發者&#xff0c;全棧領域新星創作者?&#xff0c;CSDN博客專家&#xff0c;阿里云社區專家博主&#xff0c;2023年6月CSDN上海賽道top4。 &#x1f3c6;數年電商行業從業經驗&#xff0c;歷任核心研發工程師&#xff0c;項目技術負責…

[gdc]Rendering ‘God of War Ragnark‘

gdc23&#xff0c; sony santa monica關于god of war的分享&#xff1b; back ground 作者stephen mcauley現在是santa monica的technical director&#xff1b;20年加入santa monica&#xff0c;作為rendering lead&#xff0c;有9年的經驗&#xff0c;之前在ubisoft montre…

虹科方案 | 成都大運會進行時,保障大型活動無線電安全需要…

成都大運會 7月28日&#xff0c;備受關注的第31屆世界大學生夏季運動會在成都正式開幕。據悉&#xff0c;這是全球首個5G加持的智慧大運會&#xff0c;也是眾多成熟信息技術的綜合“應用場”。使用基于5G三千兆、云網、8K超高清視頻等技術&#xff0c;在比賽現場搭建多路8K攝像…