一、回顧及引入Spring框架
1、Struts與Hibernate框架可以做什麼事?
Struts,Mvc中控制層解決方案。可以進行請求數據自動封裝、類型轉換、文件上傳、效驗…
Hibernate, 持久層的解決方案;可以做到,把對象保存到數據庫, 從數據庫中取出的是對象。
2、傳統的開發模式
基於mvc模式進行項目開發;
基於mvc的項目框架結構:Entity / dao / service / action
// 1. 實體類
class User{
}
//2. dao
class UserDao{
.. 訪問db
}
//3. service
class UserService{
UserDao userDao = new UserDao();
}
//4. action
class UserAction{
UserService userService = new UserService();
..
拿到數據或結果
}
用戶訪問:
/user.action —-> Tomcat (服務器創建Action、Service、dao
3、思考:對象創建創建能否寫死?對象創建細節?
1)對象數量
action 多個 【維護成員變量】
service 一個 【不需要維護公共變量】
dao 一個 【不需要維護公共變量】
2)創建時間
action 訪問時候創建
service 啓動時候創建
dao 啓動時候創建
3)對象的依賴關係
action 依賴 service
service 依賴 dao
總結:
spring就是解決上面的問題的!
簡單來說,就是處理對象的創建的、以及對象的依賴關係!
二、專業術語
1、組件/框架設計
1)侵入式設計:引入了框架,對現有的類的結構有影響;即需要實現或繼承某些特定類。例如: Struts框架
2)非侵入式設計:引入了框架,對現有的類結構沒有影響。例如:Hibernate框架 / Spring框架
2、控制反轉(Inversion on Control , 控制反轉 IOC):對象的創建交給外部容器完成,這個就做控制反轉。
3、依賴注入(dependency injection): 處理對象的依賴關係
控制反轉與依賴注入的區別:
控制反轉, 解決對象創建的問題 【對象創建交給別人】。
依賴注入,在創建完對象後, 對象的關係的處理就是依賴注入 【通過set方法依賴注入】。
4、AOP(面向切面編程)切面,簡單來說來可以理解爲一個類,由很多重複代碼形成的類。切面舉例:事務、日誌、權限。
三、概述:
1、Spring框架,可以解決對象創建以及對象之間依賴關係的一種框架。且可以和其他框架一起使用;Spring與Struts, Spring與hibernate
(起到整合(粘合)作用的一個框架)
2、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其他模塊的支持