一蚯瞧、spring 的作用:
在SSH框假中spring充當(dāng)了管理容器的角色检柬。我們都知道Hibernate用來做持久層白筹,因
為它將JDBC做了一個(gè)良好的封裝带兜,程序員在與數(shù)據(jù)庫進(jìn)行交互時(shí)可以不用書寫大量的SQL語
句。Struts是用來做應(yīng)用層的,他它負(fù)責(zé)調(diào)用業(yè)務(wù)邏輯serivce層沛厨。所以SSH框架的流程大致
是:Jsp頁面----Struts------Service(業(yè)務(wù)邏輯處理類)---Hibernate(左到右)struts
負(fù)責(zé)控制Service(業(yè)務(wù)邏輯處理類)宙地,從而控制了Service的生命周期,這樣層與層之間的
依賴和強(qiáng)逆皮,屬于耦合宅粥。這時(shí),使用spring框架就起到了控制Action對象(Strus中的)和
Service類的作用电谣,兩者之間的關(guān)系就松散了秽梅,Spring的Ioc機(jī)制(控制反轉(zhuǎn)和依賴注入)正
是用在此處。
Spring的Ioc(控制反轉(zhuǎn)和依賴注入)
控制反轉(zhuǎn):就是由容器控制程序之間的(依賴)關(guān)系剿牺,而非傳統(tǒng)實(shí)現(xiàn)中风纠,由程序代碼直
接操控。
依賴注入:組件之間的依賴關(guān)系由容器在運(yùn)行期決定 牢贸,由容器動態(tài)的將某種依賴關(guān)系注
入到組件之中。
從上面我們不難看出:從頭到尾Action僅僅是充當(dāng)了Service的控制工具镐捧,這些具體的
業(yè)務(wù)方法是怎樣實(shí)現(xiàn)的潜索,他根本就不會管,也不會問懂酱,他只要知道這些業(yè)務(wù)實(shí)現(xiàn)類所提供的
方法接口就可以了竹习。而在以往單獨(dú)使用Struts框架的時(shí)候,所有的業(yè)務(wù)方法類的生命周期列牺,
甚至是一些業(yè)務(wù)流程都是由Action來控制的整陌。層與層之間耦合性太緊密了,既降低了數(shù)據(jù)訪
問的效率又使業(yè)務(wù)邏輯看起來很復(fù)雜瞎领,代碼量也很多泌辫。,Spring容器控制所有Action對象和
業(yè)務(wù)邏輯類的生命周期九默,由與上層不再控制下層的生命周期震放,層與層之間實(shí)現(xiàn)了完全脫耦,
使程序運(yùn)行起來效率更高驼修,維護(hù)起來也方便。
使用Spring的第二個(gè)好處(AOP應(yīng)用):
事務(wù)的處理:
在以往的JDBCTemplate中事務(wù)提交成功乙各,異常處理都是通過Try/Catch 來完成墨礁,而在
Spring中。Spring容器集成了TransactionTemplate耳峦,她封裝了所有對事務(wù)處理的功能恩静,
包括異常時(shí)事務(wù)回滾,操作成功時(shí)數(shù)據(jù)提交等復(fù)雜業(yè)務(wù)功能蹲坷。這都是由Spring容器來管理蜕企,
大大減少了程序員的代碼量疹味,也對事務(wù)有了很好的管理控制齿诉。Hibernate中也有對事務(wù)的管
理,hibernate中事務(wù)管理是通過SessionFactory創(chuàng)建和維護(hù)Session來完成。而Spring對
SessionFactory配置也進(jìn)行了整合嬉橙,不需要在通過hibernate.cfg.xml來對
SessionaFactory進(jìn)行設(shè)定。這樣的話就可以很好的利用Sping對事務(wù)管理強(qiáng)大功能风范。避免
了每次對數(shù)據(jù)操作都要現(xiàn)獲得Session實(shí)例來啟動事務(wù)/提交/回滾事務(wù)還有繁瑣的
Try/Catch操作抵屿。這些也就是Spring中的AOP(面向切面編程)機(jī)制很好的應(yīng)用。一方面使
開發(fā)業(yè)務(wù)邏輯更清晰丐重、專業(yè)分工更加容易進(jìn)行腔召。另一方面就是應(yīng)用Spirng? AOP隔離降低了
程序的耦合性使我們可以在不同的應(yīng)用中將各個(gè)切面結(jié)合起來使用大大提高了代碼重用度。
Spring 7大功能模塊的作用[轉(zhuǎn)]
核心容器(Spring core)
核心容器提供Spring框架的基本功能扮惦。Spring以bean的方式組織和管理Java應(yīng)用中的各個(gè)組件及其關(guān)系臀蛛。Spring使用BeanFactory來產(chǎn)生和管理Bean,它是工廠模式的實(shí)現(xiàn)崖蜜。BeanFactory使用控制反轉(zhuǎn)(IoC)模式將應(yīng)用的配置和依賴性規(guī)范與實(shí)際的應(yīng)用程序代碼分開浊仆。BeanFactory使用依賴注入的方式提供給組件依賴。
Spring上下文是一個(gè)配置文件豫领,向Spring框架提供上下文信息抡柿。Spring上下文包括企業(yè)服務(wù),如JNDI等恐、EJB洲劣、電子郵件、國際化课蔬、校驗(yàn)和調(diào)度功能囱稽。
通過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring框架中二跋。所以粗悯,可以很容易地使 Spring框架管理的任何對象支持 AOP。Spring AOP 模塊為基于 Spring 的應(yīng)用程序中的對象提供了事務(wù)管理服務(wù)同欠。通過使用 Spring AOP样傍,不用依賴 EJB 組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中铺遂。
Spring DAO模塊
DAO模式主要目的是將持久層相關(guān)問題與一般的的業(yè)務(wù)規(guī)則和工作流隔離開來衫哥。Spring 中的DAO提供一致的方式訪問數(shù)據(jù)庫,不管采用何種持久化技術(shù)襟锐,Spring都提供一直的編程模型撤逢。Spring還對不同的持久層技術(shù)提供一致的DAO方式的異常層次結(jié)構(gòu)。
Spring 與所有的主要的ORM映射框架都集成的很好,包括Hibernate蚊荣、JDO實(shí)現(xiàn)初狰、TopLink和IBatis SQL Map等。Spring為所有的這些框架提供了模板之類的輔助類互例,達(dá)成了一致的編程風(fēng)格奢入。
Web上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于Web的應(yīng)用程序提供了上下文媳叨。Web層使用Web層框架腥光,可選的,可以是Spring自己的MVC框架糊秆,或者提供的Web框架武福,如Struts、Webwork痘番、tapestry和jsf捉片。
MVC框架是一個(gè)全功能的構(gòu)建Web應(yīng)用程序的MVC實(shí)現(xiàn)。通過策略接口汞舱,MVC框架變成為高度可配置的伍纫。Spring的MVC框架提供清晰的角色劃分:控制器、驗(yàn)證器兵拢、命令對象、表單對象和模型對象逾礁、分發(fā)器说铃、處理器映射和視圖解析器。Spring支持多種視圖技術(shù)嘹履。