種各樣格式的屬性定制文件的需要,在整個應用和工程中,可通過一種一致的方法來進行配置。曾經感到迷惑,一個特定類要查找迷幻般的屬性關鍵字或系統屬性,為此不得不讀javadoc乃至源編碼,有了spring,你可很簡單地看到類的javabean屬性。倒置控制的使用(在下面討論)幫助完成這種簡化。
spring能通過接口而不是類促進好的編程習慣,減少編程代價到幾乎為零。
spring被設計為讓使用它創建的應用盡可能少的依賴於他的apis。在spring應用中的大多數業務對象沒有依賴於spring。
使用spring構建的應用程序易於單元測試。spring能使ejb的使用成為一個實現選擇,而不是應用架構的必然選擇。你能選擇用pojos或localejbs來實現業務接口,卻不會影響調用代碼。spring幫助你解決許多問題而無需使用ejb。spring能提供一種ejb的替換物,它們適於許多web應用。例如,spring能使用aop提供聲明性事務而不通過使用ejb容器,如果你僅僅需要與單個的數據庫打交道,甚至不需要jta實現。spring為數據存取提供了一致的框架,不論是使用jdbc或o/rmapping產品(如hibernate)。spring確實使你能通過最簡單可行的解決辦法解決你的問題。這些特性是有很大價值的。
總結起來,spring有如下優點: 低侵入式設計,代碼污染極低 獨立於各種應用服務器,可以真正實現writeonce,runanywhere的承諾 spring的di機制降低了業務對象替換的復雜性 spring並不完全依賴於spring,開發者可自由選用spring框架的部分或全部
spring-功能作用
spring spring提供許多功能,在此將快速地依次展示其各個主要方面。
首先,明確spring范圍。盡管spring覆蓋了許多方面,但已經有清楚的概念,它什麼應該涉及和什麼不應該涉及。spring的主要目的是使j2ee易用和促進好編程習慣。spring不重新開發已有的東西。因此,在spring中你將發現沒有日志記錄的包,沒有連接池,沒有分布事務調度。這些均有開源項目提供(例如commonslogging用來做所有的日志輸出,或commonsdbcp用來作數據連接池),或由你的應用程序服務器提供。因為同樣的的原因,沒有提供o/rmapping層,對此,已有有好的解決辦法如hibernate和jdo。
spring的目標是使已存在的技術更加易用。spring沒有直接和其他的開源項目競爭,除非感到能提供新的一些東西。例如,象許多開發人員,從來沒有為struts高興過,並且感到在mvcwebframework中還有改進的余地。在某些領域,例如輕量級的ioc容器和aop框架,spring有直接的競爭,但是在這些領域還沒有已經較為流行的解決方案。(spring在這些區域是開路先鋒)
spring也得益於內在的一致性。所有的開發者都在唱同樣的的贊歌,基礎想法依然是expertone-on-onej2ee設計與開發的那些。並且能夠使用一些主要的概念,例如倒置控制,來處理多個領域。
spring在應用服務器之間是可移植的。當然保證可移植性總是一次挑戰,但是避免任何特定平台或非標准化,並且支持在weblogic,tomcat,resin,jboss,websphere和其他的應用服務器上的用戶。
spring-下載安裝
spring 下載和安裝spring請按如下步驟進行。
(1)登錄 http://www.springframework.org/download 站點,下載spring的最新穩定版本。最新版本為springframework2.5.5.建議下載spring-framework-2.5.5-with-dependencies.zip這個壓縮包不公包含spring的開發包,而且包含spring編譯和運行所依賴的第三方類庫。 下載地址: http://mesh.dl.sourceforge.net/sourceforge/springframework/spring-framework-2.5.5-with-dependencies.zip 解壓縮下載到的壓縮包,解壓縮後的文件夾應用如下幾個文件夾。
dist:該文件夾下放spring的jar包,通常只需要spring.jar文件即可。該文件夾下還有一些類似spring-xxx.jar的壓縮包,這些壓縮包是spring.jar壓縮包的子模塊壓縮包。除非確定整個j2ee應用只需要使用spring的某一方面時,才考慮使用這中分模塊壓縮包。通常建議使用spring.jar
docs:該文件夾下包含spring的相關文檔、開發指南及api參考文檔。
lib:該文件夾下包含spring編譯和運行所依賴的第三方類庫,該路徑下的類庫並不是spring必需的,但如果需要使用第三方類庫的支持,這裡的類庫就是必需要的。
samples:該文件夾下包含spring的幾個簡單例子,可作為spring入門學習的案例。
src:該文件夾下包含spring的全部源文件,如果開發過程中有地方無法把握,可以參考該源文件,了解底層實現。
test:該文件夾下包含spring的測試示例。
tiger:該路徑下存放關於jdk的相關內容解壓縮後的文件夾下,還包含一些關於spring的license和項目相關文件。
(2)將spring.jar復制到項目的classpath路徑下,對於web應用,將spring.jar文件復制到web-inf/lib路徑下,該應用即可以利用spring框架了。
(3)通常spring的框架還依賴於其他一些jar文件,因此還須將lib下對應的包復制到web-inf/lib路徑下,具體要復制哪些jar文件,取決於應用所需要使用的項目。通常需要復制cglib,dom4j,jakarta-commons,log4j等文件夾下的jar文件。
(4)為了編譯java文件,可以找到spring的基礎類,將spring.jar文件的路徑添加到環境變量classpath中。當然,也可以使用ant工具,但無須添加環境變量。如果使用eclipse或者netbeans等ide時,也不需要設置環境變量。
spring-ioc和aop 控制反轉模式(也稱作依賴性注入)的基本概念是:不創建對象,但是描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。容器(在spring框架中是ioc容器)負責將這些聯系在一起。
在典型的ioc場景中,容器創建了所有對象,並設置必要的屬性將它們連接在一起,決定什麼時間調用方法。下表列出了ioc的一個實現模式。
類型1服務需要實現專門的接口,通過接口,由對象提供這些服務,可以從對象查詢依賴性(例如,需要的附加服務)。 類型2 通過javabean的屬性(例如setter方法)分配依賴性。 類型3 依賴性以構造函數的形式提供,不以javabean屬性的形式公開。
spring框架的ioc容器采用類型2和類型3實現。
面向方面的編程,即aop,是一種編程技術,它允許程序員對橫切關注點或橫切典型的職責分界線的行為(例如日志和事務管理)進行模塊化。aop的核心構造是方面,它將那些影響多個類的行為封裝到可重用的模塊中。
aop和ioc是補充性的技術,它們都運用模塊化方式解決企業應用程序開發中的復雜問題。在典型的面向對象開發方式中,可能要將日志記錄語句放在所有方法和java類中才能實現日志功能。在aop方式中,可以反過來將日志服務模塊化,並以聲明的方式將它們應用到需要日志的組件上。當然,優勢就是java類不需要知道日志服務的存在,也不需要考慮相關的代碼。所以,用springaop編寫的應用程序代碼是松散耦合的。
aop的功能完全集成到了spring事務管理、日志和其他各種特性的上下文中。
spring-ioc容器
spring spring設計的核心是org.springframework.beans包,它的設計目標是與javabean組件一起使用。這個包通常不是由用戶直接使用,而是由服務器將其用作其他多數功能的底層中介。下一個最高級抽象是beanfactory接口,它是工廠設計模式的實現,允許通過名稱創建和檢索對象。beanfactory也可以管理對象之間的關系。
beanfactory支持兩個對象模型。
1、單態模型提供了具有特定名稱的對象的共享實例,可以在查詢時對其進行檢索。singleton是默認的也是最常用的對象模型。對於無狀態服務對象很理想。
2、原型模型確保每次檢索都會創建單獨的對象。在每個用戶都需要自己的對象時,原型模型最適合。
bean工廠的概念是spring作為ioc容器的基礎。ioc將處理事情的責任從應用程序代碼轉移到框架。 進房子 在右上那個普通模式 你放家具的時候應該用過 進入編輯模式 然後直接鼠標去點房子裡的家具 按住拖到編輯模式的框框裡 他會自動變圖紙回到那個框框裡 另外 在編輯模式裡 不是有1級 2級之類的嘛 最下面那個裡面 可以給房子改名字 很多人都不知道的~
上一页 [1] [2]
|
|