SSM框架
SSM是Spring + Spring MVC + MyBatis的縮寫,是一個繼SSH之后目前比較主流的JavaEE框架,適用於搭建各種企業級應用系統。
Spring
Spring是一個開源的、於2003年興起的、輕量級的Java開發框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來,是為了解決企業應用開發的復雜性而創建的。Spring使用基本的JavaBean來完成各種事情,具有簡單性、可測試性和松耦合等特點,其用途不僅限於服務器端的開發,任何Java應用都可以從Spring中受益。 簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。
IoC
控制反轉,即Inversion of Control,利用工廠模式將對象交給容器管理,只需在spring的配置文件中配置相應的bean,然后對其設置相應的屬性,讓spring容器來生成類的實例對象以及管理對象。在spring容器啟動的時候,spring會把配置文件中配置好的bean都進行初始化,然后在需要調用的時候把已經初始化好的這些bean分配給調用這些bean的類,因為調用了bean對象的setter方法來注入,所以就不需要再去使用new來實例這些bean了。Spring最認同控制反轉的依賴注入(DI)模式。依賴注入,即Dependency Injection,是控制反轉的一個具體的方式,當編寫一個復雜的Java程序時,此程序的類應該盡可能的獨立於其他的Java類來增加這些類可重用性;當進行單元測試時,可以使它們獨立於其他類進行測試。依賴注入有助於將這些類粘合在一起,並且在同一時間讓它們保持獨立。依賴,即兩個類之間的關聯,類A依賴於類B;注入,即將類B通過IoC注入到類A中。依賴注入可以通過向構造函數傳遞參數的方式,或者使用setter方法。可以說依賴注入是Spring框架的核心概念。
AOP
面向切面,即Aspect Oriented Programming,是Spring的特性,和OOP一樣是一種編程思想,是對OOP的補充和完善。OOP定義了從上到下的關系,但並未很好地定義從左到右的關系,例如日志功能,日志代碼水平地散布在所有對象層次中,但不可影響到所散布的對象的核心功能。如果使用OOP思想來設計,會導致大量代碼的重復,從而不利於各個模塊的重用。使用AOP,即是將程序中的交叉業務邏輯(比如日志,事務,安全驗證,數據緩存等),封裝成一個切面,然后注入到目標對象(具體業務邏輯)中去,在不改變原有代碼的基礎上擴展新的功能實現。具體的實現AOP一般分為兩種:一是采用動態代理技術,利用截取消息的方式,對該消息進行裝飾,以取代原有對象行為的執行;二是采用靜態織入的方式,引入特定的語法創建“切面”,從而使得編譯器可以在編譯期間織入有關“切面”的代碼。常用的就是利用AOP實現前置通知、后置通知、返回通知、異常通知等。
Spring MVC
Spring MVC屬於Spring Framework產品家族,是一個基於MVC架構,簡化的web應用程序開發的框架,原生支持Spring特性,讓開發變得非常的簡單規范。Spring MVC框架通過實現 模型(Model)— 視圖(View)— 控制器(Controller)模式來很好地將數據、業務與展現進行分離。Spring MVC的設計是圍繞DispatcherServlet展開的,每一個請求最先訪問的都是DispatcherServlet,DispatcherServlet負責轉發每一個Request請求給相應的Handler,Handler處理以后再返回相應的模型和視圖,返回的模型和視圖都可以不指定,即可以只返回Model或只返回View或都不返回。
MyBatis
MyBatis是由apache的一個開源項目iBatis演變而來,2010年iBatis項目由apache software foundation遷移到了google code,改名為MyBatis,2013年11月又遷移到Github。MyBatis是一款優秀的持久層框架,它支持定制化SQL、存儲過程以及高級映射。MyBatis避免了幾乎所有的JDBC代碼和手動設置參數以及獲取結果集。MyBatis可以使用簡單的XML或注解來配置和映射原生類型、接口和Java的POJO(Plain Old Java Objects,普通老式Java對象)為數據庫中的記錄。簡單來說,MyBatis是一個用來管理數據增刪改查(CRUD)的框架。
