spring是什麼,以及他的優點和核心
什麼是spring
spring是一個開放原始碼的設計層面框架 ,他解決的是業務邏輯層和其他各層的鬆耦合問題,因此它將面向介面的程式設計思想貫穿整個系統應用。
為什麼要使用spring:
1:spring的aop支援一些事務、日誌等進行集中管理,提高複用性
2:spring 提供了與第三方 持久層框架的良好整合 。
3:spring框架不強制應用完全依賴於spirng,開發者可以自由選擇spirng框架的部分或全部
Spring的兩大核心:
Aop:面向切面程式設計,aop技術底層也是採用的代理技術,代理技術有兩種:1:基於JDK的動態代理,2:基於CGLIB的動態 代理
AOP的用處以及好處:AOP能夠將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任,例如(事務處理、日誌管理、許可權管理、許可權控制等),封裝起來,便於減少系統的重複程式碼,降低模組的耦合度,並有利於未來的可操作性和可維護性。
IOC:IOC即控制反轉,不是什麼技術,而是一種設計思想。IOC意味著將你設計好的物件交給容器控制,而不是傳統的在你的物件內部直接控制。
控制反轉:
控制:
誰控制誰:當然是ioc容器控制了物件
控制了什麼:主要控制了外部資源獲取(不止物件包括比如檔案等)
反轉:
為什麼是反轉:因為容器幫我們查詢即注入依賴物件,物件只是被動的接受依賴物件
什麼 被反轉了:依賴的物件被反轉了
DI:DI即依賴注入,依賴注入的目的並非為軟體系統帶來更多功能,而是為了提升元件重用的頻率,併為了提升組建重用的頻率,並未系統搭建一個靈活、可擴充套件的平臺。
依賴注入:
依賴:
誰依賴誰:應用程式依賴於ioc容器
為什麼需要依賴:應用程式需要ioc容器來提供物件需要的外部資源
注入:
誰注入誰:ioc容器注入應用程式的某個物件,應用程式依賴的物件
注入了什麼:就是注入某個物件所需要的外部資源(包括物件、資源、常用資料)
IOC交給容器控制的好處:Tomcat的記憶體為64Mb,後來加大了記憶體容量,java中這個管家婆就是垃圾回收機制,但是她不是那麼的智慧,不能幫我們清理乾淨。在一個大專案中,如果我們想用物件就new物件的話,那會造成記憶體過大,java自動回收機制也無法替我們回收乾淨,有可能會造成記憶體溢位。而spring他是在一個執行緒池上建立的物件,當我們使用的時候就拿出來,不用的時候就掛起,很大程度的解決了記憶體溢位的問題。