目錄
框架——framework
- 框架一詞應用十分廣泛,如:土木工程、施工工藝等,在軟件工程中最爲普遍。
下面,我只說自己的理解,不高談闊論什麼可重用性、可拓展性。
框架就是工具,用於減少自己在開發工作中的工作量,簡化開發流程的一種工具。
我認爲:對框架的掌握程度,可以分爲三層:
- 1、會使用:知道如何使用框架(就像學會一種軟件的使用方法),其實這種情況下,如果嚴格按照開發文檔進行開發,就可以參加工作了。
- 2、懂流程:懂得一個框架的運行流程,高大上一點就是架構,懂得框架的架構,在使用框架時,按框架運行流程一步步進行開發,會很好的避免一些小錯誤,大大提高開發速度。
- 3、看源碼:看懂源碼,理解框架功能是如何實現的,能在框架的使用上更得心應手。
Spring框架:
- 主要用於管理項目中的對象的創建。可以貫穿項目的始終。如J2EE架構中,WEB層、Service層、Dao層,三層的對象全都可以交給Spring來管理。最初是由Rod Johnson編寫的,並且於2003年6月首次在Apache 2.0許可下發布。Apache音譯爲阿帕奇。
-
使用Spring時,要在項目的主配置文件中設置啓動Spring容器。
-
Spring框架的核心包括IOC(控制反轉)和AOP(面向切面)。
IOC——控制反轉:
- 簡單來說就是將對象的控制權(創建和銷燬)從程序員書寫的代碼交給Spring框架。
AOP——面向切面:
- 舉個例子,現在生活中最常見的快遞,從寄件方發到收件方的手裏,中間需要經過一些快遞站點,這些站點就相當於把運送過程切斷,進行分析處理之後,再向下執行。如下圖:
- 快遞如果直接從寄件方發到收件方,就使得每一件快遞都需要進行詳細安排,甚至設置專員,這樣非常耗費人力,物力,如果在中間加個處理中心,將發往同一大地點的快遞集中運送,到達後,在進行小地點分配運送,可以大大節約人力物力。
- 這個例子雖然與編程開發不太一樣,但是思想都是一樣的。
Spring在AOP思想的應用上,最典型的就是事務控制:
- Spring已經將事務控制的具體方式方法寫好了,使用時,只需要根據需要來配置即可。AOP編程(面向切面編程)一般是使用代理模式來實現的。
SpringMVC:
- SpringMVC是Spring框架的後續產品,當然同屬於Apache公司,應用於WEB層,與Struts2的功能相同。
- SpringMVC可以和Spring無縫整合。
-
使用SpringMVC時,要在項目主配置文件中配置SpringMVC容器。
-
SpringMVC主要用於前臺的請求處理,包括頁面提交的參數獲取處理和指定頁面回顯。
SpringMVC中最重要的註解——@RequestMapping:用於設置接收請求
- 一般用在方法上,用於指定執行該方法的請求路徑和方式,在中國,主要的請求方式只有GET和POST,西方有許多,如:UPDATE、DELETE等。請求路徑可以設置多個。
- 還可以用在類上,用於指定該類中,方法請求路徑的前綴。
參數獲取:
- 在方法的形參中設置要接收的參數。可以是原始的Request和Response,可以是基本數據類型,也可以是JavaBean。
- 還可以使用SpringMVC提供的Model類型作爲參數,可以設置回顯數據。
頁面回顯:
- ModelAndView:作爲方法的返回值類型時,可以設置回顯頁面和回顯數據。
- String:作爲方法的返回值時,可以設置回顯頁面,但是回顯數據需要使用Model對象,Model需要在形參中聲明。
- Void:作爲方法的返回值時,可以通過原始的Request和Response設置回顯數據和頁面,同樣需要在形參中聲明。
Mybatis框架:
- 原名ibatis,爲Apache的開源項目,2010年遷移到GooGle公司,並改名爲Mybatis。2013年11月遷移到GitHub。
- 按照J2EE架構,Mybatis是應用於DAO層的框架,與Hibernate作用相同。
-
Mybatis的主要作用就是簡化Java連接數據庫的操作。
-
主要優點包括動態SQL和Mapper接口代理開發
動態SQL:
- Mybatis不僅實現了SQL語句和Java代碼的分離,還開發了動態SQL的形式來保程序的正確運行。sql語句一般寫在XML文件中。
- 舉個例子:當條件查詢時,往往設置多個條件,當有一個或多個條件不做限制時,如果採用原始SQL,不知道哪些條件限制或沒限制,所以要都寫上,並且要加上一個“1=1”類似的條件來保證sql語句的正確執行,而動態SQL的形式,將條件使用標籤來指定,如果有些未限制的條件,Mybatis會自動進行處理,不需要自己寫個“1=1”類似的語句。
Mapper接口代理開發:
- Mybatis採用動態代理的形式,來代理程序員書寫的接口中的抽象方法,程序要無需知己實現這些方法,只需要按照Mapper接口的開發規範來進行配置和書寫SQL語句,Mybatis會自動幫我們實現方法的功能。
SpringMVC與Struts2比較:
-
相同點:
- 應用於WEB層,均採用比較成熟的MVC思想;
- 使用時,都要配置一個入口。
-
不同點:
- SpringMVC入口是前端控制器(Servlet技術);Struts2入口是核心過濾器(Filter技術)。
- SpringMVC是針對方法去開發的,一個方法對應一個或多個URL,並且參數是傳遞到方法形參上,可以設置爲單例或多例(建議單例);Struts2是基於類開發的,參數是傳遞到類的成員變量上,並且只能爲設置爲單例。
- SpringMVC在數據回執上,是將數據存儲到原始的域中,如:Request域、Session域等;而Struts2開發了值棧的概念,將數據存儲到值棧中。
Mybatis與Hibernate比較:
-
相同點:
- 都是使用SessionFactory來管理Session對象。
- 都是採用關係映射的形式來管理實體和數據庫表的關係。
- 都是採用Java代碼與SQL語句分離
-
不同點:
- Java代碼與SQL語句分離的實現方式不同:Mybatis是真正採用分離形式,SQL語句在XML中統一書寫,更偏向於簡化Java代碼;Hibernate是採用自動生成SQL語句的形式,特定API對應特定的Sql操作,更偏向於簡化SQL語句。
- Mybatis無需強制映射,可以採用自動映射(字段名和屬性名相同時)或手動映射;Hibernate必須進行實體Bean和表的關係映射,否則無法自動封裝數據。
- Hibernate有自己的緩存系統和快照;Mybatis沒有。