天天看點

Spring(概念)

在本文中隻講述一些概念性的東西,因為我在開始學習JAVA的時候對這些概念性的東西總是不太了解,總結總結再感悟一下,也友善後人。

了解的不深,用通俗的語言講一下;

百度百科這樣介紹:

Spring(概念)

spring架構主要是用于與其他的技術進行整合,如 mybaties,hibernate,struts,springMVC。可将應用中的bean中的元件實作低耦合關聯,最終提高系統的擴張維護性。這主要應用了spring的ioc和aop。

關于ioc,di的概念這裡講述的比較通俗易懂:

http://www.cnblogs.com/liuhaorain/p/3747470.html

為什麼要使用spring,目的是什麼?

答:解耦;

為什麼spring能實作解耦?

  我們都知道,在采用面向對象方法設計的軟體系統中,它的底層實作都是由N個對象組成的,所有的對象通過彼此的合作,最終實作系統的業務邏輯。

如下圖:

Spring(概念)

 這個圖形很好的像我解釋了,在這樣的齒輪組中,如果有一個齒輪出了問題,就可能會影響到整個齒輪組的正常運轉。

齒輪組中齒輪之間的齧合關系,與軟體系統中對象之間的耦合關系非常相似。對象之間的耦合關系是無法避免的,也是必要的,這是協同工作的基礎。現在,伴随着工業級應用的規模越來越龐大,對象之間的依賴關系也越來越複雜,經常會出現對象之間的多重依賴性關系,是以,架構師和設計師對于系統的分析和設計,将面臨更大的挑戰。對象之間耦合度過高的系統,必然會出現牽一發而動全身的情形。

耦合關系不僅會出現在對象與對象之間,也會出現在軟體系統的各子產品之間,以及軟體系統和硬體系統之間。如何降低系統之間、子產品之間和對象之間的耦合度,是軟體工程永遠追求的目标之一。

這就對應上了spring的ioc

IOC理論提出的觀點大體是這樣的:借助于“第三方”實作具有依賴關系的對象之間的解耦,如下圖

Spring(概念)

由于引進了中間位置的“第三方”,也就是IOC容器,使得A、B、C、D這4個對象沒有了耦合關系,齒輪之間的傳動全部依靠“第三方”了,全部對象的控制權全部上繳給“第三方”IOC容器,是以,IOC容器成了整個系統的關鍵核心,它起到了一種類似“粘合劑”的作用,把系統中的所有對象粘合在一起發揮作用,如果沒有這個“粘合劑”,對象與對象之間會彼此失去聯系,這就是有人把IOC容器比喻成“粘合劑”的由來。

我們現在看到的畫面,就是我們要實作整個系統所需要完成的全部内容。這時候,A、B、C、D這4個對象之間已經沒有了耦合關系,彼此毫無聯系,這樣的話,當你在實作A的時候,根本無須再去考慮B、C和D了,對象之間的依賴關系已經降低到了最低程度。是以,如果真能實作IOC容器,對于系統開發而言,這将是一件多麼美好的事情,參與開發的每一成員隻要實作自己的類就可以了,跟别人沒有任何關系!

spring包含的東西?

spring-core:spring的核心類庫,所有的功能都依賴這個類庫,主要實作了ioc控制反轉;

spring-aop:面先切面程式設計,如攔截器的實作,日志的實作;

spring-orm:對象關系型映射,如mybaties,jdao,hibernate。隻是提供支援,并不自己實作,對現有的進行封裝管理,事務;

spring-dao:提供jdbc支援(資料庫連結技術),并能統一管理jdbc事務spring不提供idbc實作;

spring-web:提供對struts,webwork,jsf各種web架構的支援,spring能夠管理這些架構,并能将spring的資源注入到這些架構中,如資料源;

spring-context:提供架構式bean通路 如jndi ---------   http://blog.csdn.net/qq_39566598/article/details/78861318

spring-webmvc:spring自己提供的一個輕量級的mvc的實作,在spring的框中能使用自己的mvc也能使用類是struts這樣的;

歡迎大家一起說出自己的想法。