javascript
Spring入门(一)之简介
Spring是一個開源框架,Spring是于2003 年興起的一個輕量級的Java 開發(fā)框架,由Rod Johnson創(chuàng)建。
簡單來說,Spring是一個分層的JavaSE/javaEE full-stack(全棧的)?輕量級開源框架。
?
二、Spring框架特征
(1)輕量
從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對象不依賴于Spring的特定類。
(2)控制反轉(zhuǎn)IoC
Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了低耦合。當(dāng)應(yīng)用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進(jìn)來,而不是這個對象自己創(chuàng)建或者查找依賴對象。你可以認(rèn)為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
(3)面向切面AOP
Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(例如審計(jì)(auditing)和事務(wù)(transaction)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對象只實(shí)現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們并不負(fù)責(zé)(甚至是意識)其它的系統(tǒng)級關(guān)注點(diǎn),例如日志或事務(wù)支持。
(4)容器
Spring包含并管理應(yīng)用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創(chuàng)建——基于一個可配置原型(prototype),你的bean可以創(chuàng)建一個單獨(dú)的實(shí)例或者每次需要時都生成一個新的實(shí)例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。
(5)框架
Spring可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。
(7)MVC
Spring的作用是整合,但不僅僅限于整合,Spring 框架可以被看做是一個企業(yè)解決方案級別的框架。客戶端發(fā)送請求,服務(wù)器控制器(由DispatcherServlet實(shí)現(xiàn)的)完成請求的轉(zhuǎn)發(fā),控制器調(diào)用一個用于映射的類HandlerMapping,該類用于將請求映射到對應(yīng)的處理器來處理請求。HandlerMapping 將請求映射到對應(yīng)的處理器Controller(相當(dāng)于Action)在Spring 當(dāng)中如果寫一些處理器組件,一般實(shí)現(xiàn)Controller 接口,在Controller 中就可以調(diào)用一些Service 或DAO 來進(jìn)行數(shù)據(jù)操作 ModelAndView 用于存放從DAO 中取出的數(shù)據(jù),還可以存放響應(yīng)視圖的一些數(shù)據(jù)。 如果想將處理結(jié)果返回給用戶,那么在Spring 框架中還提供一個視圖組件ViewResolver,該組件根據(jù)Controller 返回的標(biāo)示,找到對應(yīng)的視圖,將響應(yīng)response 返回給用戶。
?
三、Spring組成
?
(1)Core核心容器
這是Spring框架最基礎(chǔ)的部分,它提供了依賴注入(DependencyInjection)特征來實(shí)現(xiàn)容器對Bean的管理。這里最基本的概念是BeanFactory,它是任何Spring應(yīng)用的核心。BeanFactory是工廠模式的一個實(shí)現(xiàn),它使用IoC將應(yīng)用配置和依賴說明從實(shí)際的應(yīng)用代碼中分離出來。(2)應(yīng)用上下文Context
核心模塊的BeanFactory使Spring成為一個容器,而上下文模塊使它成為一個框架。這個模塊擴(kuò)展了BeanFactory的概念,增加了對國際化(I18N)消息、事件傳播以及驗(yàn)證的支持。 另外,這個模塊提供了許多企業(yè)服務(wù),例如電子郵件、JNDI訪問、EJB集成、遠(yuǎn)程以及時序調(diào)度(scheduling)服務(wù)。也包括了對模版框架例如Velocity和FreeMarker集成的支持。(3)AOP面向切面編程
Spring在它的AOP模塊中提供了對面向切面編程的豐富支持。這個模塊是在Spring應(yīng)用中實(shí)現(xiàn)切面編程的基礎(chǔ)。為了確保Spring與其它AOP框架的互用性,Spring的AOP支持基于AOP聯(lián)盟定義的API。AOP聯(lián)盟是一個開源項(xiàng)目,它的目標(biāo)是通過定義一組共同的接口和組件來促進(jìn)AOP的使用以及不同的AOP實(shí)現(xiàn)之間的互用性。通過訪問他們的站點(diǎn),你可以找到關(guān)于AOP聯(lián)盟的更多內(nèi)容。 Spring的AOP模塊也將元數(shù)據(jù)編程引入了Spring。使用Spring的元數(shù)據(jù)支持,你可以為你的源代碼增加注釋,指示Spring在何處以及如何應(yīng)用切面函數(shù)。(4)DAO數(shù)據(jù)訪問對象
使用JDBC經(jīng)常導(dǎo)致大量的重復(fù)代碼,取得連接、創(chuàng)建語句、處理結(jié)果集,然后關(guān)閉連接。Spring的JDBC和DAO模塊抽取了這些重復(fù)代碼,因此你可以保持你的數(shù)據(jù)庫訪問代碼干凈簡潔,并且可以防止因關(guān)閉數(shù)據(jù)庫資源失敗而引起的問題。 這個模塊還在幾種數(shù)據(jù)庫服務(wù)器給出的錯誤消息之上建立了一個有意義的異常層。使你不用再試圖破譯神秘的私有的SQL錯誤消息! 另外,這個模塊還使用了Spring的AOP模塊為Spring應(yīng)用中的對象提供了事務(wù)管理服務(wù)。(5)ORM 對象/關(guān)系映射集成
對那些更喜歡使用對象/關(guān)系映射工具而不是直接使用JDBC的人,Spring提供了ORM模塊。Spring并不試圖實(shí)現(xiàn)它自己的ORM解決方案,而是為幾種流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映射。Spring的事務(wù)管理支持這些ORM框架中的每一個也包括JDBC。(6)Web模塊
Web上下文模塊建立于應(yīng)用上下文模塊之上,提供了一個適合于Web應(yīng)用的上下文。另外,這個模塊還提供了一些面向服務(wù)支持。例如:實(shí)現(xiàn)文件上傳的multipart請求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWork。(7)MVC
Spring為構(gòu)建Web應(yīng)用提供了一個功能全面的MVC框架。雖然Spring可以很容易地與其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC對控制邏輯和業(yè)務(wù)對象提供了完全的分離。?
總結(jié)
以上是生活随笔為你收集整理的Spring入门(一)之简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nba2k20球员速度怎么变慢了?
- 下一篇: Spring入门(二)之下载与安装