成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring的起源和背景 以及你為什么要使用Spring

開發 后端
本文介紹了Spring的起源和背景。做為一個開源框架,Spring致力于J2EE應用的各層的解決方案,而不是僅僅專注于某一層的方案。可以說Spring是企業應用開發的“一站式”選擇,并貫穿表現層、業務層及持久層。

Spring的起源和背景

Rod Johson在2002年編著的《Expert one to one J2EE design and development》一書中,對Java EE正統框架臃腫、低效、脫離現實的種種現狀提出了質疑,并積極尋求探索革新之道。以此書為指導思想,他編寫了interface21框架,這是一個力圖沖破Java EE傳統開發的困境,從實際需求出發,著眼于輕便、靈巧,易于開發、測試和部署的輕量級開發框架。Spring框架即以interface21框架為基礎,經過重新設計,并不斷豐富其內涵,于2004年3月24日,發布了1.0正式版。同年他又推出了一部堪稱經典的力作《Expert one-to-one J2EE Development without EJB》,該書在Java世界掀起了軒然大波,不斷改變著Java開發者程序設計和開發的思考方式。在該書中,作者根據自己多年豐富的實踐經驗,對EJB的各種笨重臃腫的結構進行了逐一的分析和否定,并分別以簡潔實用的方式替換之。至此一戰功成,Rod Johnson成為一個改變Java世界的大師級人物。

傳統J2EE應用的開發效率低,應用服務器廠商對各種技術的支持并沒有真正統一,導致J2EE的應用沒有真正實現Write Once及Run Anywhere的承諾。Spring作為開源的中間件,獨立于各種應用服務器,甚至無須應用服務器的支持,也能提供應用服務器的功能,如聲明式事務等。

Spring致力于J2EE應用的各層的解決方案,而不是僅僅專注于某一層的方案。可以說Spring是企業應用開發的“一站式”選擇,并貫穿表現層、業務層及持久層。然而,Spring并不想取代那些已有的框架,而與它們無縫地整合。

Spring簡介

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

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

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

◆范圍:任何Java應用

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

◆輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴于Spring的特定類。

◆控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認為 IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。

◆面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務()管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。

◆容器——Spring包含并管理應用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創建——基于一個可配置原型(prototype),你的bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同于傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。

◆框架——Spring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了你。

所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。

為什么需要Spring

你可能正在想“Spring不過是另外一個的framework”。當已經有許多開放源代碼(和專有) J2EE framework時,我們為什么還需要Spring Framework?

Spring是獨特的,因為若干個原因:

◆它定位的領域是許多其他流行的framework沒有的。Spring關注提供一種方法管理你的業務對象。

◆ Spring是全面的和模塊化的。Spring有分層的體系結構,這意味著你能選擇使用它孤立的任何部分,它的架構仍然是內在穩定的。因此從你的學習中,你可得到最大的價值。例如,你可能選擇僅僅使用Spring來簡單化JDBC的使用,或用來管理所有的業務對象。

◆它的設計從底部幫助你編寫易于測試的代碼。Spring是用于測試驅動工程的理想的framework。

Spring對你的工程來說,它不需要一個以上的framework。Spring是潛在地一站式解決方案,定位于與典型應用相關的大部分基礎結構。它也涉及到其他framework沒有考慮到的內容。

Spring帶給我們什么

◆方便解耦,簡化開發

通過Spring提供的IoC容器,我們可以將對象之間的依賴關系交由Spring進行控制,避免硬編碼所造成的過度程序耦合。有了Spring,用戶不必再為單實例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注于上層的應用。

◆AOP編程的支持

通過Spring提供的AOP功能,方便進行面向切面的編程,許多不容易用傳統OOP實現的功能可以通過AOP輕松應付。

◆聲明式事務的支持

在Spring中,我們可以從單調煩悶的事務管理代碼中解脫出來,通過聲明式方式靈活地進行事務的管理,提高開發效率和質量。

◆方便程序的測試

可以用非容器依賴的編程方式進行幾乎所有的測試工作,在Spring里,測試不再是昂貴的操作,而是隨手可做的事情。

◆方便集成各種優秀框架

Spring不排斥各種優秀的開源框架,相反,Spring可以降低各種框架的使用難度,Spring提供了對各種優秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持。

◆降低Java EE API的使用難度

Spring對很多難用的Java EE API(如JDBC,JavaMail,遠程調用等)提供了一個薄薄的封裝層,通過Spring的簡易封裝,這些Java EE API的使用難度大為降低。

◆Java 源碼是經典學習范例

Spring的源碼設計精妙、結構清晰、匠心獨用,處處體現著大師對Java設計模式靈活運用以及對Java技術的高深造詣。Spring框架源碼無疑是Java技術的最佳實踐范例。如果想在短時間內迅速提高自己的Java技術水平和應用開發水平,學習和研究Spring源碼將會使你收到意想不到的效果。
Spring框架的好處
在我們進入細節以前,讓我們看一下Spring可以給一個工程帶來的一些好處:

◆Spring能有效地組織你的中間層對象,無論你是否選擇使用了EJB。如果你僅僅使用了Struts或其他的包含了J2EE特有APIs的framework,你會發現Spring關注了遺留下的問題,。

◆Spring能消除在許多工程上對Singleton的過多使用。根據我的經驗,這是一個主要的問題,它減少了系統的可測試性和面向對象特性。

◆Spring能消除使用各種各樣格式的屬性定制文件的需要,在整個應用和工程中,可通過一種一致的方法來進行配置。曾經感到迷惑,一個特定類要查找迷幻般的屬性關鍵字或系統屬性,為此不得不讀Javadoc乃至源編碼嗎?有了Spring,你可很簡單地看到類的JavaBean屬性。倒置控制的使用(在下面討論)幫助完成這種簡化。

◆Spring能通過接口而不是類促進好的編程習慣,減少編程代價到幾乎為零。

◆Spring被設計為讓使用它創建的應用盡可能少的依賴于他的APIs。在Spring應用中的大多數業務對象沒有依賴于Spring。

◆使用Spring構建的應用程序易于單元測試。

◆Spring能使EJB的使用成為一個實現選擇,而不是應用架構的必然選擇。你能選擇用POJOs或local EJBs來實現業務接口,卻不會影響調用代碼。

◆Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適于許多web應用。例如,Spring能使用AOP提供聲明性事務而不通過使用EJB容器,如果你僅僅需要與單個的數據庫打交道,甚至不需要JTA實現。

■Spring為數據存取提供了一致的框架,不論是使用JDBC或O/R mapping產品(如Hibernate)。

Spring確實使你能通過最簡單可行的解決辦法解決你的問題。這些特性是有很大價值的。

總結起來,Spring有如下優點:

◆低侵入式設計,代碼污染極低

◆ 獨立于各種應用服務器,可以真正實現Write Once,Run Anywhere的承諾

◆Spring的DI機制降低了業務對象替換的復雜性

◆Spring并不完全依賴于Spring,開發者可自由選用Spring框架的部分或全部

Spring能做什么?

Spring提供許多功能,在此我將快速地依次展示其各個主要方面。

首先,讓我們明確Spring范圍。盡管Spring覆蓋了許多方面,但我們已經有清楚的概念,它什么應該涉及和什么不應該涉及。

Spring的主要目的是使J2EE易用和促進好編程習慣。

Spring不重新開發已有的東西。因此,在Spring中你將發現沒有日志記錄的包,沒有連接池,沒有分布事務調度。這些均有開源項目提供(例如 Commons Logging 用來做所有的日志輸出,或Commons DBCP用來作數據連接池),或由你的應用程序服務器提供。因為同樣的的原因,我們沒有提供O/R mapping層,對此,已有有好的解決辦法如Hibernate和JDO。

Spring的目標是使已存在的技術更加易用。

例如,盡管我們沒有底層事務協調處理,但我們提供了一個抽象層覆蓋了JTA或任何其他的事務策略。

Spring沒有直接和其他的開源項目競爭,除非我們感到我們能提供新的一些東西。例如,象許多開發人員,我們從來沒有為Struts高興過,并且感到在MVC web framework中還有改進的余地。在某些領域,例如輕量級的IoC容器和AOP框架,Spring有直接的競爭,但是在這些領域還沒有已經較為流行的解決方案。(Spring在這些區域是開路先鋒。)

Spring也得益于內在的一致性。

所有的開發者都在唱同樣的的贊歌,基礎想法依然是Expert One-on-One J2EE設計與開發的那些。

并且我們已經能夠使用一些主要的概念,例如倒置控制,來處理多個領域。

Spring在應用服務器之間是可移植的。

當然保證可移植性總是一次挑戰,但是我們避免任何特定平臺或非標準化,并且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的應用服務器上的用戶。

Spring的下載和安裝

下載和安裝Spring請按如下步驟進行。

(1)登錄http://www.springframework.org/download站點,下載Spring的最新穩定版本。最新版本為Spring Framework 2.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時,也不需要設置環境變量。

【編輯推薦】

  1. jBPM 3.2用戶指南 概覽
  2. jBPM 4.0.0用戶指南 安裝配置
  3. jBPM數據庫表說明:流程節點表
  4. J2EE工作流管理系統jBPM詳解(一)
  5. J2EE工作流管理系統jBPM詳解(二) 
責任編輯:book05 來源: 163博客
相關推薦

2014-04-25 10:05:42

OpenStack私有云公共云

2012-08-13 09:15:54

Go開發語言編程語言

2014-11-21 10:50:26

JavaString

2011-03-08 12:59:38

proftpd

2017-07-03 13:33:42

AndroidItemDecorat

2011-04-14 09:30:15

集合框架

2010-05-11 10:29:06

Unix awk

2014-05-19 15:52:57

Apache StraApache

2022-09-26 10:26:27

FieldIDEASpring

2024-01-24 11:24:03

C++編程異常處理

2013-09-27 11:33:57

交換機技術Vlan技術

2023-09-21 09:00:00

Merge Que開發工具Mergify

2014-01-03 10:59:34

2024-01-03 08:15:35

Executors線程池線程

2023-03-06 08:01:25

structGo語言

2024-01-01 08:57:55

ODBCSqlServer數據庫

2021-12-24 17:01:29

Linux工具系統

2021-01-29 14:14:47

動態代理緩存

2022-04-26 16:56:20

行為數據數據

2018-05-01 06:43:33

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久91av | 成人av一区| 成人福利在线观看 | 精品区| 亚洲a人 | 97伦理电影| 国产乱精品一区二区三区 | 毛片链接 | 91精品久久久久久久久久入口 | 国产精品mv在线观看 | 欧美亚洲免费 | 午夜精品一区二区三区在线观看 | 天天操综合网站 | 男女久久久 | 免费一级毛片 | 国产精品视频不卡 | 91精品国产一二三 | 国产在线观看免费 | 久久久久国产 | 亚洲一区二区在线 | 国产激情片在线观看 | 国产精品1 | 在线观看中文字幕一区二区 | www在线视频 | 久热久草 | 亚洲一区二区中文字幕 | 成人免费视屏 | 成人性生交大片免费看中文带字幕 | 亚洲成人av | 久久手机在线视频 | 一区二区不卡视频 | 二区av| 久在线| 91九色麻豆 | 嫩草视频网站 | 69福利影院 | 天天久久 | 精品欧美黑人一区二区三区 | 亚洲一区国产精品 | 成人影院在线视频 | 亚洲韩国精品 |