關於Spring總結 Spring引入 傳統的基於mvc的項目框架結構:Entity / dao / service / action 簡單用戶訪問流程:/user.action Tomcat (伺服器創建Action、Service、dao 引出思考: 1. 對象創建創建能否寫死? 2. 對象創建 ...
關於Spring總結
Spring引入
傳統的基於mvc的項目框架結構:Entity / dao / service / action
簡單用戶訪問流程:/user.action ----> Tomcat (伺服器創建Action、Service、dao
引出思考:
1. 對象創建創建能否寫死?
2. 對象創建細節
對象數量
action 多個 【維護成員變數】
service 一個 【不需要維護公共變數】
dao 一個 【不需要維護公共變數】
創建時間
action 訪問時候創建
service 啟動時候創建
dao 啟動時候創建
3. 對象的依賴關係
action 依賴 service
service依賴 dao
總結:Spring就是解決上面的問題的.簡單來說,就是處理對象的創建的、以及對象的依賴關係,降低組件之間的耦合度,實現軟體各層之間的解耦。
Spring介紹
Spring是什麼?
Spring是一個非常活躍的開源框架, 它是一個基於IOC和AOP來構架多層JavaEE系統的框架,它的主要目地是簡化企業開發,Spring以一種非侵入式的方式來管理你的代碼, Spring提倡”最少侵入”,這也就意味著你可以適當的時候安裝或卸載Spring。
具體描述Spring
輕量級:Spring 是非侵入性的>基於 Spring 開發的應用中的對象可以不依賴於 Spring 的 API,基礎版本的Spring框架大約只有2MB.
組件/框架設計 侵入式設計 引入了框架,對現有的類的結構有影響;即需要實現或繼承某些特定類。 例如: Struts框架 非侵入式設計 引入了框架,對現有的類結構沒有影響。 例如:Hibernate框架 / Spring框架
依賴註入(DI --- dependency injection、IOC)
Spring使用控制反轉技術實現了松耦合。依賴被註入到對象,而不是創建或尋找依賴對象。 a、IOC Inversion on Control , 控制反轉 其思想是反轉資源獲取的方向. 傳統的資源查找方式要求組件向容器發起請求查找資源. 作為回應, 容器適時的返回資源. 而應用了 IOC 之後, 則是容器主動地將資源推送給它所管理的組件, 組件所要做的僅是選擇一種合適的方式來接受資源. 這種行為也被稱為查找的被動形式。可以簡單的理解為對象的創建交給外部容器完成,這個就叫做控制反轉. b、依賴註入, dependency injection IOC 的另一種表述方式:即組件以一些預先定義好的方式(例如: setter 方法)接受來自如容器的資源註入. 相對於 IOC 而言,這種表述更直接。 兩者區別: 控制反轉: 解決對象創建的問題 【對象創建交給別人】 依賴註入: 在創建完對象後,對象的關係的處理就是依賴註入 【通過set方法依賴註入】
面向切麵編程(AOP --- aspect oriented programming)
a、採用了面向切麵編程來實現很多基礎但是與業務邏輯無關的功能的解耦,比如:事務管理、日誌、許可權驗證等。 b、AOP 的主要編程對象是切麵(aspect), 而切麵模塊化橫切關註點. c、在應用 AOP 編程時, 仍然需要定義公共功能, 但可以明確的定義這個功能在哪裡, 以什麼方式應用, 並且不必修改受影響的類. 這樣一來橫切關註點就被模塊化到特殊的對象(切麵)里. 關註點: 重覆代碼就叫做關註點; 切麵: 關註點形成的類,就叫切麵(類)! 面向切麵編程,就是指對很多功能都有的重覆的代碼抽取,再在運行的時候往業務方法上動態植入“切麵類代碼”。 切入點: 執行目標對象方法,動態植入切麵代碼。 可以通過切入點表達式,指定攔截哪些類的哪些方法; 給指定的類在運行的時候植入切麵類代碼。
容器:Spring 是一個容器, 因為它包含並且管理應用對象的生命周期
框架:Spring 實現了使用簡單的組件配置組合成一個複雜的應用. 在 Spring 中可以使用 XML 和 Java 註解組合這些對象
一站式
Spring提供了一站式解決方案: 1) Spring Core spring的核心功能: IOC容器, 解決對象創建及依賴關係 2) Spring Web Spring對web模塊的支持。 可以與struts整合,讓struts的action創建交給spring spring mvc模式 3) Spring DAO Spring 對jdbc操作的支持 【JdbcTemplate模板工具類】 4) Spring ORM spring對orm的支持: 既可以與hibernate整合,【session】 也可以使用spring的對hibernate操作的封裝 5)Spring AOP 切麵編程 6)SpringEE spring 對javaEE其他模塊的支持