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

品味 Spring 魅力:非侵入式 IOC 容器核心機制探秘

     編輯:Java 程式設計入門

Spring 哲學:非侵入式設計

EJB 採侵入式設計,強迫類別實作特定介面、遵循規範;輕量級框架(如 Avalon)亦要求實作 Serviceable 等介面。Spring 核心哲學:不影響 Java 物件原有設計,將其納入框架管理。因此大量採用反射與內省實現靈活的 IOC(控制反轉)容器。

核心組件:BeanWrapper

Spring 統一管理 Bean 屬性存取與方法調用的核心是 org.springframework.beans.BeanWrapper,預設實作 BeanWrapperImpl。它對任意 Bean 提供:

  • 屬性設置/獲取(含巢狀屬性)
  • 方法呼叫
  • 型別轉換

範例:操作 Company 與 Employee

public class Company {
    private String name;
    private Employee managingDirector;
    // getter/setter 略
}
public class Employee {
    private float salary;
    // getter/setter 略
}

// 使用 BeanWrapper
Company c = new Company();
BeanWrapper bwComp = new BeanWrapperImpl(c);
bwComp.setPropertyValue("name", "Some Company Inc.");

Employee jim = new Employee();
BeanWrapper bwJim = new BeanWrapperImpl(jim);
bwJim.setPropertyValue("name", "Jim Stravinsky");
bwComp.setPropertyValue("managingDirector", jim);

// 透過巢狀路徑獲取薪資
Float salary = (Float) bwComp.getPropertyValue("managingDirector.salary");

雖較直接呼叫 setter 繁瑣,但提供統一的元編程介面,支援框架層面的通用 Bean 操作。

BeanFactory:Bean 的製造工廠

Spring 將 Bean 納入核心登記表管理,支援兩種生成模式:

  • Prototype:每次請求產生新實例。
  • Singleton:全容器共享單一實例(預設)。

BeanFactory 介面定義 getBean(String name) 等方法,實作類(如 XmlBeanFactory、ApplicationContext)負責解析配置、實例化、依賴注入與生命週期管理。

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