Java程序员从笨鸟到菜鸟之(六十七)细谈Spring(一)spring简介
? ? ? ? ?spring?是一個開源框架,是為了解決企業應用程序開發復雜性而創建的。框架的主要優勢之一就是其分層架構,分層架構允許您選擇使用哪一個組件,同時為?J2EE?應用程序開發提供集成的框架。??然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。?Spring的核心是個輕量級容器(Container),實現了IoC(Inversion?of?Control)模式的容器,Spring的目標是實現一個全方位的整合框架,在Spring框架下實現多個子框架的組合,這些子框架之間彼此可以獨立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop?shop的框架整合方案?
??????簡單來說,Spring是一個輕量級的控制反轉(IOC)和面向切面(AOP)的容器框架。
輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴于Spring的特定類。
控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。
容器——Spring包含并管理應用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創建——基于一個可配置原型(prototype),你的bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同于傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。
框架——Spring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了你。 所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。?
Spring?框架是一個分層架構,由?7?個定義良好的模塊組成。Spring?模塊構建在核心容器之上,核心容器定義了創建、配置和管理?bean?的方式,如下圖所示:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
Spring?框架的分為7個模塊,組成?Spring?框架的每個模塊(或組件)都可以單獨存在,或者與其他一個或多個模塊聯合實現。每個模塊的功能如下:?
1.核心容器:核心容器提供?Spring?框架的基本功能。核心容器的主要組件是?BeanFactory,它是工廠模式的實現。BeanFactory?使用控制反轉?(IOC)?模式將應用程序的配置和依賴性規范與實際的應用程序代碼分開。
2.Spring?上下文:Spring?上下文是一個配置文件,向?Spring?框架提上下文信息。Spring?上下文包括企業服務,例如?JNDI、EJB、電子郵件、國際化、校驗和調度功能。
3.Spring?AOP:通過配置管理特性,Spring?AOP?模塊直接將面向方面的編程功能集成到了?Spring?框架中。所以,可以很容易地使?Spring?框架管理的任何對象支持?AOP。Spring?AOP?模塊為基于?Spring?的應用程序中的對象提供了事務管理服務。通過使用?Spring?AOP,不用依賴?EJB?組件,就可以將聲明性事務管理集成到應用程序中。
?? ? ??4.?Spring?DAO:JDBC?DAO?抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數量(例如打開和關閉連接)。Spring?DAO?的面向?JDBC?的異常遵從通用的?DAO?異常層次結構。
? ? ??5.Spring?ORM:Spring?框架插入了若干個?ORM?框架,從而提供了?ORM?的對象關系工具,其中包括?JDO、hibernate?和?iBatis?SQL?Map。所有這些都遵從?Spring?的通用事務和?DAO?異常層次結構。
6.?Spring?Web?模塊:Web?上下文模塊建立在應用程序上下文模塊之上,為基于?Web?的應用程序提供了上下文。所以,Spring?框架支持與?Jakarta?Struts?的集成。Web?模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工作。
7.?Spring?MVC?框架:MVC?框架是一個全功能的構建?Web?應用程序的?MVC?實現。通過策略接口,MVC?框架變成為高度可配置的,MVC?容納了大量視圖技術,其中包括?JSP、Velocity、Tiles、iText?和?POI。
?Spring?框架的功能可以用在任何?J2EE?服務器中,大多數功能也適用于不受管理的環境。Spring?的核心要點是:支持不綁定到特定?J2EE?服務的可重用業務和數據訪問對象。毫無疑問,這樣的對象可以在不同?J2EE?環境?(Web?或?EJB)、獨立應用程序、測試環境之間重用。??
????????
總結起來,Spring有如下優點:
1.低侵入式設計,代碼污染極低
2.?獨立于各種應用服務器,可以真正實現Write?Once,Run?Anywhere的承諾
3.Spring的DI機制降低了業務對象替換的復雜性
4.Spring并不完全依賴于Spring,開發者可自由選用Spring框架的部分或全部?????
?????IOC?和?AOP:這兩個概念可以算是spring中的核心了,這兩個概念非常抽象,并且也不容易理解,所以我們下面來簡單來描述一下這兩個概念。
??控制反轉模式(也稱作依賴性介入)的基本概念是:不創建對象,但是描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。容器?(在?Spring?框架中是?IOC?容器)?負責將這些聯系在一起。在典型的?IOC?場景中,容器創建了所有對象,并設置必要的屬性將它們連接在一起,決定什么時間調用方法。下表列出了?IOC?的一個實現模式。
| 類型?1 | 服務需要實現專門的接口,通過接口,由對象提供這些服務,可以從對象查詢依賴性(例如,需要的附加服務),這種用的很少 |
| 類型?2 | 通過?JavaBean?的屬性(例如?setter?方法)分配依賴性 |
| 類型?3 | 依賴性以構造函數的形式提供,不以?JavaBean?屬性的形式公開 |
Spring?框架的?IOC?容器主要采用類型?2?和類型3?實現。
?面向方面的編程,即?AOP,是一種編程技術,它允許程序員對橫切關注點或橫切典型的職責分界線的行為(例如日志和事務管理)進行模塊化。AOP?的核心構造是方面,它將那些影響多個類的行為封裝到可重用的模塊中。
AOP?和?IOC?是補充性的技術,它們都運用模塊化方式解決企業應用程序開發中的復雜問題。在典型的面向對象開發方式中,可能要將日志記錄語句放在所有方法和?Java?類中才能實現日志功能。在?AOP?方式中,可以反過來將日志服務模塊化,并以聲明的方式將它們應用到需要日志的組件上。當然,優勢就是?Java?類不需要知道日志服務的存在,也不需要考慮相關的代碼。所以,用?Spring?AOP?編寫的應用程序代碼是松散耦合的。AOP?的功能完全集成到了?Spring?事務管理、日志和其他各種特性的上下文中。
IOC?容器:Spring?設計的核心是?org.springframework.beans?包,它的設計目標是與?JavaBean?組件一起使用。這個包通常不是由用戶直接使用,而是由服務器將其用作其他多數功能的底層中介。下一個最高級抽象是?BeanFactory?接口,它是工廠設計模式的實現,允許通過名稱創建和檢索對象。BeanFactory?也可以管理對象之間的關系。
BeanFactory?支持兩個對象模型:
1.單態?模型提供了具有特定名稱的對象的共享實例,可以在查詢時對其進行檢索。Singleton?是默認的也是最常用的對象模型。對于無狀態服務對象很理想。
2.?原型?模型確保每次檢索都會創建單獨的對象。在每個用戶都需要自己的對象時,原型模型最適合。
bean?工廠的概念是?Spring?作為?IOC?容器的基礎。IOC?將處理事情的責任從應用程序代碼轉移到框架。正如我將在下一個示例中演示的那樣,Spring?框架使用?JavaBean?屬性和配置數據來指出必須設置的依賴關系。?
??????Spring的源碼設計精妙、結構清晰、匠心獨用,處處體現著大師對java設計模式靈活運用以及對Java技術的高深造詣。Spring框架源碼無疑是Java技術的最佳實踐范例。如果想在短時間內迅速提高自己的Java技術水平和應用開發水平,學習和研究Spring源碼將會使你收到意想不到的效果。?可是從哪著手研究Spring卻是很多新手頭疼的地方,下面的參考資料將帶領大家慢慢的深入解析Spring?
1?Spring中的事務處理
2?ioc容器在Web容器中的啟動
3?Spring?JDBC
4?Spring?MVC
5?Spring?AOP獲取Proxy
6?Spring聲明式事務處理
7?Spring?AOP中對攔截器調用的實現
8?Spring驅動Hibernate的實現
9?Spring?Acegi框架鑒權的實現
具體的源碼解析內容大家可以百度或者谷歌一下,可以找到大量源碼解析內容。
from:?
? ? ? ? ?spring?是一個開源框架,是為了解決企業應用程序開發復雜性而創建的。框架的主要優勢之一就是其分層架構,分層架構允許您選擇使用哪一個組件,同時為?J2EE?應用程序開發提供集成的框架。??然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。?Spring的核心是個輕量級容器(Container),實現了IoC(Inversion?of?Control)模式的容器,Spring的目標是實現一個全方位的整合框架,在Spring框架下實現多個子框架的組合,這些子框架之間彼此可以獨立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop?shop的框架整合方案?
??????簡單來說,Spring是一個輕量級的控制反轉(IOC)和面向切面(AOP)的容器框架。
輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴于Spring的特定類。
控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。
容器——Spring包含并管理應用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創建——基于一個可配置原型(prototype),你的bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同于傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。
框架——Spring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了你。 所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。?
Spring?框架是一個分層架構,由?7?個定義良好的模塊組成。Spring?模塊構建在核心容器之上,核心容器定義了創建、配置和管理?bean?的方式,如下圖所示:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
Spring?框架的分為7個模塊,組成?Spring?框架的每個模塊(或組件)都可以單獨存在,或者與其他一個或多個模塊聯合實現。每個模塊的功能如下:?
1.核心容器:核心容器提供?Spring?框架的基本功能。核心容器的主要組件是?BeanFactory,它是工廠模式的實現。BeanFactory?使用控制反轉?(IOC)?模式將應用程序的配置和依賴性規范與實際的應用程序代碼分開。
2.Spring?上下文:Spring?上下文是一個配置文件,向?Spring?框架提上下文信息。Spring?上下文包括企業服務,例如?JNDI、EJB、電子郵件、國際化、校驗和調度功能。
3.Spring?AOP:通過配置管理特性,Spring?AOP?模塊直接將面向方面的編程功能集成到了?Spring?框架中。所以,可以很容易地使?Spring?框架管理的任何對象支持?AOP。Spring?AOP?模塊為基于?Spring?的應用程序中的對象提供了事務管理服務。通過使用?Spring?AOP,不用依賴?EJB?組件,就可以將聲明性事務管理集成到應用程序中。
?? ? ??4.?Spring?DAO:JDBC?DAO?抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數量(例如打開和關閉連接)。Spring?DAO?的面向?JDBC?的異常遵從通用的?DAO?異常層次結構。
? ? ??5.Spring?ORM:Spring?框架插入了若干個?ORM?框架,從而提供了?ORM?的對象關系工具,其中包括?JDO、hibernate?和?iBatis?SQL?Map。所有這些都遵從?Spring?的通用事務和?DAO?異常層次結構。
6.?Spring?Web?模塊:Web?上下文模塊建立在應用程序上下文模塊之上,為基于?Web?的應用程序提供了上下文。所以,Spring?框架支持與?Jakarta?Struts?的集成。Web?模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工作。
7.?Spring?MVC?框架:MVC?框架是一個全功能的構建?Web?應用程序的?MVC?實現。通過策略接口,MVC?框架變成為高度可配置的,MVC?容納了大量視圖技術,其中包括?JSP、Velocity、Tiles、iText?和?POI。
?Spring?框架的功能可以用在任何?J2EE?服務器中,大多數功能也適用于不受管理的環境。Spring?的核心要點是:支持不綁定到特定?J2EE?服務的可重用業務和數據訪問對象。毫無疑問,這樣的對象可以在不同?J2EE?環境?(Web?或?EJB)、獨立應用程序、測試環境之間重用。??
????????
總結起來,Spring有如下優點:
1.低侵入式設計,代碼污染極低
2.?獨立于各種應用服務器,可以真正實現Write?Once,Run?Anywhere的承諾
3.Spring的DI機制降低了業務對象替換的復雜性
4.Spring并不完全依賴于Spring,開發者可自由選用Spring框架的部分或全部?????
?????IOC?和?AOP:這兩個概念可以算是spring中的核心了,這兩個概念非常抽象,并且也不容易理解,所以我們下面來簡單來描述一下這兩個概念。
??控制反轉模式(也稱作依賴性介入)的基本概念是:不創建對象,但是描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。容器?(在?Spring?框架中是?IOC?容器)?負責將這些聯系在一起。在典型的?IOC?場景中,容器創建了所有對象,并設置必要的屬性將它們連接在一起,決定什么時間調用方法。下表列出了?IOC?的一個實現模式。
| 類型?1 | 服務需要實現專門的接口,通過接口,由對象提供這些服務,可以從對象查詢依賴性(例如,需要的附加服務),這種用的很少 |
| 類型?2 | 通過?JavaBean?的屬性(例如?setter?方法)分配依賴性 |
| 類型?3 | 依賴性以構造函數的形式提供,不以?JavaBean?屬性的形式公開 |
Spring?框架的?IOC?容器主要采用類型?2?和類型3?實現。
?面向方面的編程,即?AOP,是一種編程技術,它允許程序員對橫切關注點或橫切典型的職責分界線的行為(例如日志和事務管理)進行模塊化。AOP?的核心構造是方面,它將那些影響多個類的行為封裝到可重用的模塊中。
AOP?和?IOC?是補充性的技術,它們都運用模塊化方式解決企業應用程序開發中的復雜問題。在典型的面向對象開發方式中,可能要將日志記錄語句放在所有方法和?Java?類中才能實現日志功能。在?AOP?方式中,可以反過來將日志服務模塊化,并以聲明的方式將它們應用到需要日志的組件上。當然,優勢就是?Java?類不需要知道日志服務的存在,也不需要考慮相關的代碼。所以,用?Spring?AOP?編寫的應用程序代碼是松散耦合的。AOP?的功能完全集成到了?Spring?事務管理、日志和其他各種特性的上下文中。
IOC?容器:Spring?設計的核心是?org.springframework.beans?包,它的設計目標是與?JavaBean?組件一起使用。這個包通常不是由用戶直接使用,而是由服務器將其用作其他多數功能的底層中介。下一個最高級抽象是?BeanFactory?接口,它是工廠設計模式的實現,允許通過名稱創建和檢索對象。BeanFactory?也可以管理對象之間的關系。
BeanFactory?支持兩個對象模型:
1.單態?模型提供了具有特定名稱的對象的共享實例,可以在查詢時對其進行檢索。Singleton?是默認的也是最常用的對象模型。對于無狀態服務對象很理想。
2.?原型?模型確保每次檢索都會創建單獨的對象。在每個用戶都需要自己的對象時,原型模型最適合。
bean?工廠的概念是?Spring?作為?IOC?容器的基礎。IOC?將處理事情的責任從應用程序代碼轉移到框架。正如我將在下一個示例中演示的那樣,Spring?框架使用?JavaBean?屬性和配置數據來指出必須設置的依賴關系。?
??????Spring的源碼設計精妙、結構清晰、匠心獨用,處處體現著大師對java設計模式靈活運用以及對Java技術的高深造詣。Spring框架源碼無疑是Java技術的最佳實踐范例。如果想在短時間內迅速提高自己的Java技術水平和應用開發水平,學習和研究Spring源碼將會使你收到意想不到的效果。?可是從哪著手研究Spring卻是很多新手頭疼的地方,下面的參考資料將帶領大家慢慢的深入解析Spring?
1?Spring中的事務處理
2?ioc容器在Web容器中的啟動
3?Spring?JDBC
4?Spring?MVC
5?Spring?AOP獲取Proxy
6?Spring聲明式事務處理
7?Spring?AOP中對攔截器調用的實現
8?Spring驅動Hibernate的實現
9?Spring?Acegi框架鑒權的實現
具體的源碼解析內容大家可以百度或者谷歌一下,可以找到大量源碼解析內容。
http://blog.csdn.net/csh624366188/article/details/7633836
? ? ? ? ?spring?是一個開源框架,是為了解決企業應用程序開發復雜性而創建的。框架的主要優勢之一就是其分層架構,分層架構允許您選擇使用哪一個組件,同時為?J2EE?應用程序開發提供集成的框架。??然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。?Spring的核心是個輕量級容器(Container),實現了IoC(Inversion?of?Control)模式的容器,Spring的目標是實現一個全方位的整合框架,在Spring框架下實現多個子框架的組合,這些子框架之間彼此可以獨立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop?shop的框架整合方案?
??????簡單來說,Spring是一個輕量級的控制反轉(IOC)和面向切面(AOP)的容器框架。
輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴于Spring的特定類。
控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。
容器——Spring包含并管理應用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創建——基于一個可配置原型(prototype),你的bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同于傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。
框架——Spring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了你。 所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。?
Spring?框架是一個分層架構,由?7?個定義良好的模塊組成。Spring?模塊構建在核心容器之上,核心容器定義了創建、配置和管理?bean?的方式,如下圖所示:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
Spring?框架的分為7個模塊,組成?Spring?框架的每個模塊(或組件)都可以單獨存在,或者與其他一個或多個模塊聯合實現。每個模塊的功能如下:?
1.核心容器:核心容器提供?Spring?框架的基本功能。核心容器的主要組件是?BeanFactory,它是工廠模式的實現。BeanFactory?使用控制反轉?(IOC)?模式將應用程序的配置和依賴性規范與實際的應用程序代碼分開。
2.Spring?上下文:Spring?上下文是一個配置文件,向?Spring?框架提上下文信息。Spring?上下文包括企業服務,例如?JNDI、EJB、電子郵件、國際化、校驗和調度功能。
3.Spring?AOP:通過配置管理特性,Spring?AOP?模塊直接將面向方面的編程功能集成到了?Spring?框架中。所以,可以很容易地使?Spring?框架管理的任何對象支持?AOP。Spring?AOP?模塊為基于?Spring?的應用程序中的對象提供了事務管理服務。通過使用?Spring?AOP,不用依賴?EJB?組件,就可以將聲明性事務管理集成到應用程序中。
?? ? ??4.?Spring?DAO:JDBC?DAO?抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數量(例如打開和關閉連接)。Spring?DAO?的面向?JDBC?的異常遵從通用的?DAO?異常層次結構。
? ? ??5.Spring?ORM:Spring?框架插入了若干個?ORM?框架,從而提供了?ORM?的對象關系工具,其中包括?JDO、hibernate?和?iBatis?SQL?Map。所有這些都遵從?Spring?的通用事務和?DAO?異常層次結構。
6.?Spring?Web?模塊:Web?上下文模塊建立在應用程序上下文模塊之上,為基于?Web?的應用程序提供了上下文。所以,Spring?框架支持與?Jakarta?Struts?的集成。Web?模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工作。
7.?Spring?MVC?框架:MVC?框架是一個全功能的構建?Web?應用程序的?MVC?實現。通過策略接口,MVC?框架變成為高度可配置的,MVC?容納了大量視圖技術,其中包括?JSP、Velocity、Tiles、iText?和?POI。
?Spring?框架的功能可以用在任何?J2EE?服務器中,大多數功能也適用于不受管理的環境。Spring?的核心要點是:支持不綁定到特定?J2EE?服務的可重用業務和數據訪問對象。毫無疑問,這樣的對象可以在不同?J2EE?環境?(Web?或?EJB)、獨立應用程序、測試環境之間重用。??
????????
總結起來,Spring有如下優點:
1.低侵入式設計,代碼污染極低
2.?獨立于各種應用服務器,可以真正實現Write?Once,Run?Anywhere的承諾
3.Spring的DI機制降低了業務對象替換的復雜性
4.Spring并不完全依賴于Spring,開發者可自由選用Spring框架的部分或全部?????
?????IOC?和?AOP:這兩個概念可以算是spring中的核心了,這兩個概念非常抽象,并且也不容易理解,所以我們下面來簡單來描述一下這兩個概念。
??控制反轉模式(也稱作依賴性介入)的基本概念是:不創建對象,但是描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。容器?(在?Spring?框架中是?IOC?容器)?負責將這些聯系在一起。在典型的?IOC?場景中,容器創建了所有對象,并設置必要的屬性將它們連接在一起,決定什么時間調用方法。下表列出了?IOC?的一個實現模式。
| 類型?1 | 服務需要實現專門的接口,通過接口,由對象提供這些服務,可以從對象查詢依賴性(例如,需要的附加服務),這種用的很少 |
| 類型?2 | 通過?JavaBean?的屬性(例如?setter?方法)分配依賴性 |
| 類型?3 | 依賴性以構造函數的形式提供,不以?JavaBean?屬性的形式公開 |
Spring?框架的?IOC?容器主要采用類型?2?和類型3?實現。
?面向方面的編程,即?AOP,是一種編程技術,它允許程序員對橫切關注點或橫切典型的職責分界線的行為(例如日志和事務管理)進行模塊化。AOP?的核心構造是方面,它將那些影響多個類的行為封裝到可重用的模塊中。
AOP?和?IOC?是補充性的技術,它們都運用模塊化方式解決企業應用程序開發中的復雜問題。在典型的面向對象開發方式中,可能要將日志記錄語句放在所有方法和?Java?類中才能實現日志功能。在?AOP?方式中,可以反過來將日志服務模塊化,并以聲明的方式將它們應用到需要日志的組件上。當然,優勢就是?Java?類不需要知道日志服務的存在,也不需要考慮相關的代碼。所以,用?Spring?AOP?編寫的應用程序代碼是松散耦合的。AOP?的功能完全集成到了?Spring?事務管理、日志和其他各種特性的上下文中。
IOC?容器:Spring?設計的核心是?org.springframework.beans?包,它的設計目標是與?JavaBean?組件一起使用。這個包通常不是由用戶直接使用,而是由服務器將其用作其他多數功能的底層中介。下一個最高級抽象是?BeanFactory?接口,它是工廠設計模式的實現,允許通過名稱創建和檢索對象。BeanFactory?也可以管理對象之間的關系。
BeanFactory?支持兩個對象模型:
1.單態?模型提供了具有特定名稱的對象的共享實例,可以在查詢時對其進行檢索。Singleton?是默認的也是最常用的對象模型。對于無狀態服務對象很理想。
2.?原型?模型確保每次檢索都會創建單獨的對象。在每個用戶都需要自己的對象時,原型模型最適合。
bean?工廠的概念是?Spring?作為?IOC?容器的基礎。IOC?將處理事情的責任從應用程序代碼轉移到框架。正如我將在下一個示例中演示的那樣,Spring?框架使用?JavaBean?屬性和配置數據來指出必須設置的依賴關系。?
??????Spring的源碼設計精妙、結構清晰、匠心獨用,處處體現著大師對java設計模式靈活運用以及對Java技術的高深造詣。Spring框架源碼無疑是Java技術的最佳實踐范例。如果想在短時間內迅速提高自己的Java技術水平和應用開發水平,學習和研究Spring源碼將會使你收到意想不到的效果。?可是從哪著手研究Spring卻是很多新手頭疼的地方,下面的參考資料將帶領大家慢慢的深入解析Spring?
1?Spring中的事務處理
2?ioc容器在Web容器中的啟動
3?Spring?JDBC
4?Spring?MVC
5?Spring?AOP獲取Proxy
6?Spring聲明式事務處理
7?Spring?AOP中對攔截器調用的實現
8?Spring驅動Hibernate的實現
9?Spring?Acegi框架鑒權的實現
具體的源碼解析內容大家可以百度或者谷歌一下,可以找到大量源碼解析內容。
總結
以上是生活随笔為你收集整理的Java程序员从笨鸟到菜鸟之(六十七)细谈Spring(一)spring简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IntelliJ IDEA - 热部署插
- 下一篇: Java程序员从笨鸟到菜鸟之(六十八)细