初學Spring
Spring是什麼?
Spring是一個開源的輕量級的Java開發框架。
2.Spring有什麼作用?
簡化應用程式的開發。
3.簡化應用程式開發體現在哪些方面?
①IOC容器
Java思想是面向物件的開發,一個應用程式是由一組物件通過相互協作開發出的業務邏輯組成,那麼如何管理這些物件,使他們高效地協作呢?抽象工廠、工廠方法設計模式”可以幫我們建立物件,“生成器模式”幫我們處理物件間的依賴關係,不也能完成這些功能嗎?可是這些又需要我們建立另一些工廠類、生成器類,我們又要而外管理這些類,增加了我們的負擔。所以用另外的方式,如果物件需要的時候,就自動地生成物件,不用再去建立。舉個例子:原來我們餓了,就出去吃飯,但是現在有了外賣之後,就可以訂餐了,我們可以把我們的需求告訴美團,讓他們給我們送飯。這裡主導關係發生了變化,原來是我們自己,但是現在是美團。
Spring提出了一種思想:就是由spring來負責控制物件的生命週期和物件間的關係。所有的類都會在spring容器中登記,告訴spring你是個什麼東西,你需要什麼東西,然後spring會在系統執行到適當的時候,把你要的東西主動給你,同時也把你交給其他需要你的東西。所有的類的建立、銷燬都由 spring來控制,也就是說控制物件生存週期的不再是引用它的物件,而是spring。對於某個具體的物件而言,以前是它控制其他物件,現在是所有物件都被spring控制,所以這叫控制反轉(IOC)。
② AOP
比如進行一個計算器的編寫,需要實現加、減、乘、除四種簡單的運算,編寫四種不同的方法。還有另外的兩個需求是在每種運算之前和運算之後需要列印日誌進行記錄,需要進行數字合規的校驗。我們就得考慮如何能簡單地實現呢?就是得把日誌記錄和資料校驗等可重用的功能模組分離出來,然後在程式的執行的合適的地方動態地植入這些程式碼並執行。這樣就簡化了程式碼的書寫,業務邏輯程式碼中沒有參和通用邏輯的程式碼,業務模組更簡潔,只包含核心業務程式碼。實現了業務邏輯和通用邏輯的程式碼分離,便於維護和升級,降低了業務邏輯和通用邏輯的耦合。
有人會想到把這些通用的功能整合到一個方法中,去呼叫,這樣也是避免不了重複呼叫,並且在業務邏輯中新增額外的程式碼。Spring通過配置的方式,而且不需要在業務邏輯程式碼中新增任何額外程式碼,就可以很好地實現上述功能。以上這種方式就是spring中實現的AOP:意思是面向切面程式設計,提供從另一個角度來考慮程式結構以完善面向物件程式設計(相對於OOP),即可以通過在編譯期間、裝載期間或執行期間實現在不修改原始碼的情況下給程式動態新增功能的一種技術。通俗點說就是把可重用的功能提取出來,然後將這些通用功能在合適的時候織入到應用程式中;比如安全,日記記錄,這些都是通用的功能,我們可以把它們提取出來,然後在程式執行的合適地方織入這些程式碼並執行它們,從而完成需要的功能並複用了這些功能。
③宣告式事務
通過程式設計的方式對事務進行管理,特別麻煩。在Spring中,我們可以從單調煩悶的事務管理程式碼中解脫出來,通過宣告式方式靈活地進行事務的管理,提高開發效率和質量。
④粘合劑
Spring是一個超級粘合平臺,除了自己提供功能外,還提供粘合其他技術和框架的能力,從而使我們可以更自由的選擇到底使用什麼技術進行開發。