對Spring的一些理解

        最近在複習一些關於框架的概念性問題,主要是爲了最近的面試,怕被問到這些概念性的問題。不過在真正做開發的時候還是要好好理解這些框架的基本原理,以及它們的工作流程。這樣,我們才能更好的使用這些框架。下面就談談我對Spring框架的一些理解。

        Spring是一個開源框架,實際上就是一種容器,是一種實現了IOC模式的容器,也可以說是一個Bean的工廠,對Bean進行管理,它的兩個重要特徵是IOC和AOP。

IOC(Inversion of Control)控制反轉:將類的創建和依賴關係寫在spring的配置文件中,由配置文件在程序運行的時候動態注入,這樣就實現輕耦合。

AOP(Aspect Oriented Programming)面向切面編程:將安全、事務、log等公共的服務對於程序邏輯相對獨立的功能抽取出來,利用spring的配置文件將這些功能在程序運行的時候動態的插進去,讓程序員更專注於業務邏輯的實現,實現了按照方面編程,提高了可維護性和複用性 

 

 

 

           介紹Spring的核心

        Spring的核心是個輕量級容器(container),實現了IoC(Inversion of Control)模式的容器,Spring的目標是實現一個全方位的整合框架,在Spring框架下實現多個子框架的組合,這些子框架之間彼此可以獨立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案 。

        Spring不會特別去提出一些子框架來與現有的開源框架競爭,除非它覺得所提出的框架夠新夠好,例如Spring有自己的 MVC框架方案,因爲它覺得現有的MVC方案有很多可以改進的地方,但它不強迫您使用它提供的方案,您可以選用您所希望的框架來取代其子框架,例如您仍可以在Spring中整合您的Struts框架 。

        Spring的核心概念是IoC,IoC的抽象概念是「依賴關係的轉移」,像是「高層模組不應該依賴低層模組,而是模組都必須依賴於抽象」是 IoC的一種表現,「實現必須依賴抽象,而不是抽象依賴實現」也是IoC的一種表現,「應用程序不應依賴於容器,而是容器服務於應用程序」也是IoC的一種表現。

       其核心容器:提供基本功能,主要核心 BeanFactory 工廠模式的實現,使用控制反轉 (依 賴注入)實現.讓Bean 與 Bean 之間以配置文件組織在一起,而不是以硬編碼的方式耦合在一起.創建實例由spring容器來完成.創建對象的控制權由調用者交給了容器來管理,這就是控制反轉名字的由來.

       所謂依賴注入,是指在程序運行過程中,當需要被調用時,由容器自己提供被調用者的實例,調用者與被調用者都處於spring管理下,二者之間的以來關係有spring提供.

       spring框架的核心思想是建立一個java對象的工廠,用戶只要給工廠一個指令,工廠就能將用戶需要的對象根據配置文件組裝好還給用戶.

       業務層service 控制層 Action  持久層 DAO  各層之間調用完全面向接口,無需關心其具體實現的類,當重構代碼時,改寫量將大大減少.

 

       在SSH框架中spring充當了管理容器的角色。我們都知道Hibernate用來做持久層,因

爲它將JDBC做了一個良好的封裝,程序員在與數據庫進行交互時可以不用書寫大量的SQL語句。Struts是用來做應用層的,他它負責調用業務邏輯serivce層。所以SSH框架的流程大致是:Jsp頁面----Struts------Service(業務邏輯處理類)---Hibernate(左到右)struts負責控制Service(業務邏輯處理類),從而控制了Service的生命週期,這樣層與層之間的依賴和強,屬於耦合。這時,使用spring框架就起到了控制Action對象(Strus中的)和Service類的作用,兩者之間的關係就鬆散了,SpringIoc機制(控制反轉和依賴注入)正是用在此處。

     SpringIoc(控制反轉和依賴注入)

     控制反轉:就是由容器控制程序之間的(依賴)關係,而非傳統實現中,由程序代碼直接操控。

     依賴注入:組件之間的依賴關係由容器在運行期決定 ,由容器動態的將某種依賴關係注入到組件之中。

 

     使用Spring的第二個好處(AOP應用):

     事務的處理:

     在以往的JDBCTemplate中事務提交成功,異常處理都是通過Try/Catch 來完成,而在Spring中。Spring容器集成了TransactionTemplate,她封裝了所有對事務處理的功能,包括異常時事務回滾,操作成功時數據提交等複雜業務功能。這都是由Spring容器來管理,大大減少了程序員的代碼量,也對事務有了很好的管理控制。Hibernate中也有對事務的管理,hibernate中事務管理是通過SessionFactory創建和維護Session來完成。而SpringSessionFactory配置也進行了整合,不需要在通過hibernate.cfg.xml來對SessionaFactory進行設定。這樣的話就可以很好的利用Sping對事務管理強大功能。避免了每次對數據操作都要現獲得Session實例來啓動事務/提交/回滾事務還有繁瑣的Try/Catch操作。這些也就是Spring中的AOP(面向切面編程)機制很好的應用。一方面使開發業務邏輯更清晰、專業分工更加容易進行。另一方面就是應用Spirng  AOP隔離降低了程序的耦合性使我們可以在不同的應用中將各個切面結合起來使用大大提高了代碼重用度。 

 

       以上是我對Spring框架的一些個人理解,如有錯誤望大神指出,好讓小弟早日改正錯誤,更好的運用Spring。

 

 

 

 

 

 

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章