SSM 框架集-01-詳細介紹-入門問題篇
剛開始瞭解 SSM,首先先解決幾個基礎問題html
1.什麼是 SSM 框架集?web
- SSM(Spring+SpringMVC+MyBatis)框架集由 Spring、MyBatis 兩個個開源框架整合而成(SpringMVC 是 Spring 中的部份內容)。常做爲數據源較簡單的 web 項目的框架。
- SSM 是標準的 MVC 模式,將整個系統劃分爲表現層,controller層,service層,DAO層四層。使用 spring MVC 負責請求的轉發和視圖管理。spring實現業務對象管理,mybatis 做爲數據對象的持久化引擎。
- 若是新手剛開始可能不知道從什麼開始學,首先明白學習大的兩部分 spring,mybatis ,建議先學習 spring,能夠到 W3cschool Spring 教程,而後再學習 mybatis,能夠在 mybatis 官網文檔 學習。而後我也會一直在博客更新學習筆記,一塊兒學習吧
2.什麼是 Spring?spring
- Spring是一個開源的輕量級Java SE(Java 標準版本)/Java EE(Java 企業版本)開發應用框架,其目的是用於簡化企業級應用程序開發。應用程序是由一組相互協做的對象組成。而在傳統應用程序開發中,一個完整的應用是由一組相互協做的對象組成。因此開發一個應用除了要開發業務邏輯以外,最多的是關注如何使這些對象協做來完成所需功能,並且要低耦合、高內聚。業務邏輯開發是不可避免的,那若是有個框架出來幫咱們來建立對象及管理這些對象之間的依賴關係。可能有人說了,好比「抽象工廠、工廠方法設計模式」不也能夠幫咱們建立對象,「生成器模式」幫咱們處理對象間的依賴關係,不也能完成這些功能嗎?但是這些又須要咱們建立另外一些工廠類、生成器類,咱們又要而外管理這些類,增長了咱們的負擔,若是能有種經過配置方式來建立對象,管理對象之間依賴關係,咱們不須要經過工廠和生成器來建立及管理對象之間的依賴關係,這樣咱們是否是減小了許多工做,加速了開發,能節省出不少時間來幹其餘事。Spring框架剛出來時主要就是來完成這個功能。
- Spring框架除了幫咱們管理對象及其依賴關係,還提供像通用日誌記錄、性能統計、安全控制、異常處理等面向切面的能力,還能幫我管理最頭疼的數據庫事務,自己提供了一套簡單的JDBC訪問實現,提供與第三方數據訪問框架集成(如Hibernate、JPA),與各類Java EE技術整合(如Java Mail、任務調度等等),提供一套本身的web層框架Spring MVC、並且還能很是簡單的與第三方web框架集成。從這裏咱們能夠認爲Spring是一個超級粘合平臺,除了本身提供功能外,還提供粘合其餘技術和框架的能力,從而使咱們能夠更自由的選擇到底使用什麼技術進行開發。並且不論是JAVA
SE(C/S架構)應用程序仍是JAVA EE(B/S架構)應用程序均可以使用這個平臺進行開發。讓咱們來深刻看一下Spring到底能幫咱們作些什麼?
3.Spring能幫咱們作什麼?sql
Spring除了不能幫咱們寫業務邏輯,其他的幾乎什麼都能幫助咱們簡化開發:數據庫
- (1) 傳統程序開發,建立對象及組裝對象間依賴關係由咱們在程序內部進行控制,這樣會加大各個對象間的耦合,若是咱們要修改對象間的依賴關係就必須修改源代碼,從新編譯、部署;而若是採用Spring,則由Spring根據配置文件來進行建立及組裝對象間依賴關係,只須要改配置文件便可,無需從新編譯。因此,Spring能幫咱們根據配置文件建立及組裝對象之間的依賴關係。
- (2) 當咱們要進行一些日誌記錄、權限控制、性能統計等時,在傳統應用程序當中咱們可能在須要的對象或方法中進行,並且好比權限控制、性能統計大部分是重複的,這樣代碼中就存在大量重複代碼,即便有人說我把通用部分提取出來,那必然存在調用仍是存在重複,像性能統計咱們可能只是在必要時才進行,在診斷完畢後要刪除這些代碼;還有日誌記錄,好比記錄一些方法訪問日誌、數據訪問日誌等等,這些都會滲透到各個要訪問方法中;還有權限控制,必須在方法執行開始進行審覈,想一想這些是多麼可怕並且是多麼無聊的工做。若是採用Spring,這些日誌記錄、權限控制、性能統計從業務邏輯中分離出來,經過Spring支持的面向切面編程,在須要這些功能的地方動態添加這些功能,無需滲透到各個須要的方法或對象中;有人可能說了,咱們可使用「代理設計模式」或「包裝器設計模式」,你可使用這些,但仍是須要經過編程方式來建立代理對象,仍是要耦合這些代理對象,而採用Spring 面向切面編程能提供一種更好的方式來完成上述功能,通常經過配置方式,並且不須要在現有代碼中添加任何額外代碼,現有代碼專一業務邏輯。因此,Spring 面向切面編程能幫助咱們無耦合的實現日誌記錄,性能統計,安全控制。
- (3) 在傳統應用程序當中,咱們如何來完成數據庫事務管理?須要一系列「獲取鏈接,執行SQL,提交或回滾事務,關閉鏈接」,並且還要保證在最後必定要關閉鏈接,多麼可怕的事情,並且也很無聊;若是採用Spring,咱們只需獲取鏈接,執行SQL,其餘的都交給Spring來管理了,簡單吧。因此,Spring能很是簡單的幫咱們管理數據庫事務。
- (4) Spring還提供了與第三方數據訪問框架(如Hibernate、JPA)無縫集成,並且本身也提供了一套JDBC訪問模板,來方便數據庫訪問。
- (5) Spring還提供與第三方Web(如Struts、JSF)框架無縫集成,並且本身也提供了一套Spring MVC框架,來方便web層搭建。
(6) Spring能方便的與Java EE(如Java Mail、任務調度)整合,與更多技術整合(好比緩存框架)。編程
Spring能幫咱們作這麼多事情,提供這麼多功能和與那麼多主流技術整合,並且是幫咱們作了開發中比較頭疼和困難的事情,那可能有人會問,難道只有Spring這一個框架,沒有其餘選擇?固然有,好比EJB須要依賴應用服務器、開發效率低、在開發中小型項目是宰雞拿牛刀,雖然發展到如今EJB比較好用了,但仍是比較笨重還須要依賴應用服務器等。設計模式
4.什麼是 SpringMVC?緩存
- SpringMVC 是 Spring 中的部份內容,SpringMVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定製。
- 不少應用程序的問題在於處理業務數據的對象和顯示業務數據的視圖之間存在緊密耦合,一般,更新業務對象的命令都是從視圖自己發起的,使視圖對任何業務對象更改都有高度敏感性。並且,當多個視圖依賴於同一個業務對象時是沒有靈活性的。
- SpringMVC 是一種基於Java,實現了Web MVC設計模式,請求驅動類型的輕量級Web框架,即便用了MVC架構模式的思想,將Web層進行職責解耦。基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助咱們簡化開發,SpringMVC也是要簡化咱們平常Web開發
5.什麼是 MyBatis?安全
- MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可使用簡單的 XML 或註解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄
6.爲何要用 MyBatis?服務器
- 簡單易學:自己就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar文件+配置幾個sql映射文件易於學習,易於使用,經過文檔和源代碼,能夠比較徹底的掌握它的設計思路和實現。
- 靈活:mybatis不會對應用程序或者數據庫的現有設計強加任何影響。 sql寫在xml裏,便於統一管理和優化。經過sql基本上能夠實現咱們不使用數據訪問框架能夠實現的全部功能,或許更多。
- 解除sql與程序代碼的耦合:經過提供DAO層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提升了可維護性。
- 提供映射標籤,支持對象與數據庫的orm字段關係映射;提供對象關係映射標籤,支持對象關係組建維護;提供xml標籤,支持編寫動態sql。
更多文章連接:SSM 框架集