首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring IOC 容器詳解:BeanFactory 與 ApplicationContext 核心差異

     編輯:Java 相關知識

容器角色

Spring 容器負責創建對象、裝配依賴、管理完整生命周期。核心接口:BeanFactory(基礎)、ApplicationContext(企業級增強)。

BeanFactory:基礎 IOC 容器

  • 接口:org.springframework.beans.factory.BeanFactory。
  • 典型實現:XmlBeanFactory(已過時,教學用)。
  • 特性:延遲初始化、基礎 DI、資源受限環境適用(Applet、移動設備)。

代碼示例

XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("Beans.xml"));
HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");
obj.getMessage();

ApplicationContext:企業級優選容器

  • 繼承 BeanFactory 所有功能。
  • 新增:國際化(MessageSource)、事件發布、資源加載、聲明式驗證、AOP 集成等。
  • 常用實現:
    • ClassPathXmlApplicationContext:類路徑 XML。
    • FileSystemXmlApplicationContext:文件系統絕對路徑 XML。
    • AnnotationConfigApplicationContext:註解配置類。
    • WebApplicationContext:Web 環境專用。

FileSystemXmlApplicationContext 示例

ApplicationContext ctx = new FileSystemXmlApplicationContext("C:/workspace/HelloSpring/src/Beans.xml");
HelloWorld obj = (HelloWorld) ctx.getBean("helloWorld");

核心差異對比

特性BeanFactoryApplicationContext
初始化策略按需延遲啟動時預實例化單例
國際化不支持內建 MessageSource
事件機制無ApplicationEventPublisher
資源加載基本ResourcePatternResolver
AOP 集成手動自動代理
適用場景資源極度受限絕大多數企業應用

Bean 定義元數據

三種來源:XML、註解、Java Config。容器讀取元數據 → 實例化 → 注入依賴 → 生命周期回調 → 可用 Bean。

最佳實踐建議

  1. 默認使用 ApplicationContext(或 Spring Boot 自動配置)。
  2. 僅在極端資源受限(如舊式 Applet)考慮 BeanFactory。
  3. 優先使用 Java Config (@Configuration + @Bean) 或註解 (@Component),XML 維護舊項目。

總結

理解兩大容器定位與差異,是掌握 Spring IOC 體系、排查啟動性能、選擇配置方式的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved