spring框架

spring框架

Java開源框架
Spring框架是由于軟件開發的複雜性而創建的。Spring使用的是基本的JavaBean來完成以前隻可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務器端的開發。從簡單性、可測試性和松耦合性的角度而言,絕大部分Java應用都可以從Spring中受益。◆目的:解決企業應用開發的複雜性◆功能:使用基本的JavaBean代替EJB,并提供了更多的企業應用功能◆範圍:任何Java應用Spring是一個輕量級控制反轉(IoC)和面向切面(AOP)的容器框架。
    中文名:spring框架 外文名: 所屬學科: 創建原因:軟件開發的複雜性 使用:JavaBean 目的:解決企業應用開發的複雜性 功能:使用基本的JavaBean代替EJB 範圍:任何Java應用

定義簡介

是基于Java語言的極速web開發框架,其核心設計目标是開發迅速、代碼量少、易擴展等;Spring框架是由于軟件開發的複雜性而創建的,其用途不僅僅限于服務器端的開發。

Spring是一個開源框架,它由RodJohnson創建。這是為了解決企業應用開發的複雜性而創建的。Spring使用的是基本的JavaBean來完成以前隻可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務器端的開發。從簡單性、可測試性和松耦合性的角度而言,任何Java應用都可以從Spring中受益。

◆目的:解決企業應用開發的複雜性

◆功能:使用基本的JavaBean代替EJB,并提供了更多的企業應用功能

◆範圍:任何Java應用

Spring是一個輕量級控制反轉(IoC)和面向切面(AOP)的容器框架。

起源要談Spring的曆史,就要先談J2EE。J2EE應用程序的廣泛實現是在1999年和2000年開始的,它的出現帶來了諸如事務管理之類的核心中間層概念的标準化,但是在實踐中并沒有獲得絕對的成功,因為開發效率,開發難度和實際的性能都令人失望。

曾經使用過EJB開發J2EE應用的人,一定知道,在EJB開始的學習和應用非常的艱苦,很多東西都不能一下子就很容易的理解。EJB要嚴格地繼承各種不同類型的接口,類似的或者重複的代碼大量存在。而配置也是複雜和單調,同樣使用JNDI進行對象查找的代碼也是單調而枯燥。雖然有一些開發工作随着xdoclet的出現,而有所緩解,但是學習EJB的高昂代價,和極低的開發效率,極高的資源消耗,都造成了EJB的使用困難。而Spring出現的初衷就是為了解決類似的這些問題。

Spring的一個最大的目的就是使J2EE開發更加容易。同時,Spring之所以與Struts、Hibernate等單層框架不同,是因為Spring緻力于提供一個以統一的、高效的方式構造整個應用,并且可以将單層框架以最佳的組合揉和在一起建立一個連貫的體系。可以說Spring是一個提供了更完善開發環境的一個框架,可以為POJO(Plain Old Java Object)對象提供企業級的服務。

Spring的形成,最初來自Rod Jahnson所着的一本很有影響力的書籍《Expert One-on-One J2EE Design and Development》,就是在這本書中第一次出現了Spring的一些核心思想,該書出版于2002年。另外一本書《Expert One-on-One J2EE Development without EJB》,更進一步闡述了在不使用EJB開發J2EE企業級應用的一些設計思想和具體的做法。有時間了可以詳細的研讀一下。

獨特優點

◆J2EE應該更加容易使用。

◆面向對象的設計比任何實現技術(比如J2EE)都重要。

◆面向接口編程,而不是針對類編程。Spring将使用接口的複雜度降低到零。(面向接口編程有哪些複雜度?)

◆代碼應該易于測試。Spring框架會幫助你,使代碼的測試更加簡單。

◆JavaBean提供了應用程序配置的最好方法。

◆在Java中,已檢查異常(Checked exception)被過度使用。框架不應該迫使你捕獲不能恢複的異常。

模塊

Spring框架由七個定義明确的模塊組成(圖1.1)。

(Spring框架概覽圖1.1)

如果作為一個整體,這些模塊為你提供了開發企業應用所需的一切。但你不必将應用完全基于Spring框架。你可以自由地挑選适合你的應用的模塊而忽略其餘的模塊。

就像你所看到的,所有的Spring模塊都是在核心容器之上構建的。容器定義了Bean是如何創建、配置和管理的——更多的Spring細節。當你配置你的應用時,你會潛在地使用這些類。但是作為一名開發者,你最可能對影響容器所提供的服務的其它模塊感興趣。這些模塊将會為你提供用于構建應用服務的框架,例如AOP和持久性。

核心容器

這是Spring框架最基礎的部分,它提供了依賴注入(DependencyInjection)特征來實現容器對Bean的管理。這裡最基本的概念是BeanFactory,它是任何Spring應用的核心。BeanFactory是工廠模式的一個實現,它使用IoC将應用配置和依賴說明從實際的應用代碼中分離出來。

應用上下文(Context)模塊

核心模塊的BeanFactory使Spring成為一個容器,而上下文模塊使它成為一個框架。這個模塊擴展了BeanFactory的概念,增加了對國際化(I18N)消息、事件傳播以及驗證的支持。

另外,這個模塊提供了許多企業服務,例如電子郵件、JNDI訪問、EJB集成、遠程以及時序調度(scheduling)服務。也包括了對模版框架例如Velocity和FreeMarker集成的支持。

Spring的AOP模塊

Spring在它的AOP模塊中提供了對面向切面編程的豐富支持。這個模塊是在Spring應用中實現切面編程的基礎。為了确保Spring與其它AOP框架的互用性,Spring的AOP支持基于AOP聯盟定義的API。AOP聯盟是一個開源項目,它的目标是通過定義一組共同的接口和組件來促進AOP的使用以及不同的AOP實現之間的互用性。通過訪問他們的站點,你可以找到關于AOP聯盟的更多内容。

Spring的AOP模塊也将元數據編程引入了Spring。使用Spring的元數據支持,你可以為你的源代碼增加注釋,指示Spring在何處以及如何應用切面函數。

JDBC抽象和DAO模塊

使用JDBC經常導緻大量的重複代碼,取得連接、創建語句、處理結果集,然後關閉連接。Spring的JDBC和DAO模塊抽取了這些重複代碼,因此你可以保持你的數據庫訪問代碼幹淨簡潔,并且可以防止因關閉數據庫資源失敗而引起的問題。

這個模塊還在幾種數據庫服務器給出的錯誤消息之上建立了一個有意義的異常層。使你不用再試圖破譯神秘的私有的SQL錯誤消息!

另外,這個模塊還使用了Spring的AOP模塊為Spring應用中的對象提供了事務管理服務。

對象/關系映射集成模塊

對那些更喜歡使用對象/關系映射工具而不是直接使用JDBC的人,Spring提供了ORM模塊。Spring并不試圖實現它自己的ORM解決方案,而是為幾種流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映射。Spring的事務管理支持這些ORM框架中的每一個也包括JDBC。

Spring的Web模塊

Web上下文模塊建立于應用上下文模塊之上,提供了一個适合于Web應用的上下文。另外,這個模塊還提供了一些面向服務支持。例如:實現文件上傳的multipart請求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWork。

Spring的MVC框架

Spring為構建Web應用提供了一個功能全面的MVC框架。雖然Spring可以很容易地與其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC對控制邏輯和業務對象提供了完全的分離。

它也允許你聲明性地将請求參數綁定到你的業務對象中,此外,Spring的MVC框架還可以利用Spring的任何其它服務,例如國際化信息與驗證。

Spring框架Web頁面亂碼問題

在做java Web 項目時,亂碼問題時常都會出現,解決方法也不盡相同,有簡單也有複雜的;如果加入了Spring框架之後就不一樣了,可以采用Spring框架自帶的過濾器CharacterEncodingFilter,這樣可以大大減輕了我們的工作量,即簡單方便又容易理解,配置方式如下:在web.xml文件中filter的位置加上如下内容:

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

encodingFilter

*

上一篇:MVC框架

下一篇:MVC模式

相關詞條

相關搜索

其它詞條