Spring框架(一)——初識Spring
一、 Spring 是什麼
1)Spring 是一個開源框架。
2)Spring 為簡化企業級應用開發而生. 使用 Spring 可以使簡單的 JavaBean 實現以前只有 EJB 才能實現的功能。
3)Spring 是一個 IOC(DI) 和 AOP 容器框架。
二、Spring容器的主要核心是什麼
控制反轉(IOC),傳統的java開發模式中,當需要一個物件時,我們會自己使用new等直接或者間接呼叫構造方法建立一個物件。而在spring開發模式中,spring容器使用了工廠模式為我們建立了所需要的物件,不需要我們自己建立了,直接呼叫spring提供的物件就可以了,這是控制反轉的思想。
依賴注入(DI)
面向切面程式設計(AOP),在面向物件程式設計(OOP)思想中,我們將事物縱向抽成一個個的物件。而在面向切面程式設計中,我們將一個個的物件某些類似的方面橫向抽成一個切面,對這個切面進行一些如許可權控制、事物管理,記錄日誌等公用操作處理的過程就是面向切面程式設計的思想。AOP底層是動態代理,如果是介面採用JDK動態代理,如果是類採用CGLIB方式實現動態代理。
三、Spring體系結構組成
核心容器:包括Beans、Core、Context、SpEL模組。
Core模組:封裝了框架依賴的最底層部分,包括資源訪問、型別轉換及一些常用工具類。
Beans模組:提供了框架的基礎部分,包括反轉控制和依賴注入。其中Bean Factory是容器核心,本質是“工廠設計模式”的實現,而且無需程式設計實現“單例設計模式”,“單例”完全由容器控制,而且提倡面向介面程式設計,而非面向實現程式設計;所有應用程式物件及物件間關係由框架管理,從而真正把你從程式邏輯中把維護物件之間的依賴關係提取出來,所有這些依賴關係都由Bean Factory來維護。
Context模組:以Core和Beans為基礎,整合Beans模組功能並新增資源繫結、資料驗證、國際化、Java EE支援、容器生命週期、事件傳播等;核心介面是ApplicationContext。
SpEL模組
AOP、Aspects模組:
AOP模組:Spring AOP模組提供了符合 AOP Alliance規範的面向方面的程式設計(aspect-oriented programming)實現,提供比如日誌記錄、許可權控制、效能統計等通用功能和業務邏輯分離的技術,並且能動態的把這些功能新增到需要的程式碼中;這樣各專其職,降低業務邏輯和通用功能的耦合。
Aspects模組:提供了對AspectJ的整合,AspectJ提供了比Spring ASP更強大的功能。
資料訪問/整合模組:該模組包括了JDBC、ORM、OXM、JMS和事務管理。
事務管理模組:該模組用於 Spring 管理事務,只要是 Spring 管理物件都能得到 Spring 管理事務的好處,無需在程式碼中進行事務控制了,而且支援程式設計和宣告性的事務管理。
JDBC模組:提供了一個JBDC的樣例模板,使用這些模板能消除傳統冗長的JDBC編碼還有必須的事務控制,而且能享受到Spring管理事務的好處。
ORM模組:提供與流行的“物件-關係”對映框架的無縫整合,包括Hibernate、JPA、MyBatis等。而且可以使用Spring事務管理,無需額外控制事務。
OXM模組:提供了一個對Object/XML對映實現,將java物件對映成XML資料,或者將XML資料對映成java物件,Object/XML對映實現包括JAXB、Castor、XMLBeans和XStream。
JMS模組:用於JMS(Java Messaging Service),提供一套 “訊息生產者、訊息消費者”模板用於更加簡單的使用JMS,JMS用於用於在兩個應用程式之間,或分散式系統中傳送訊息,進行非同步通訊。
Web/Remoting模組:Web/Remoting模組包含了Web、Web-Servlet等模組。
Web模組:提供了基礎的web功能。例如多檔案上傳、整合IOC容器、遠端過程訪問(RMI、Hessian、Burlap)以及Web Service支援,並提供一個Rest Template類來提供方便的Restful services訪問。
Web-Servlet模組:提供了一個Spring MVC Web框架實現。Spring MVC框架提供了基於註解的請求資源注入、更簡單的資料繫結、資料驗證等及一套非常易用的JSP標籤,完全無縫與Spring其他技術協作。
四、Spring能幫我們做什麼
1)Spring能幫我們根據配置檔案建立及組裝物件之間的依賴關係。
Spring根據配置檔案來進行建立及組裝物件間依賴關係,只需要改配置檔案即可
2)Spring 面向切面程式設計能幫助我們無耦合的實現日誌記錄,效能統計,安全控制。
Spring 面向切面程式設計能提供一種更好的方式來完成,一般通過配置方式,而且不需要在現有程式碼中新增任何額外程式碼,現有程式碼專注業務邏輯。
3)Spring能非常簡單的幫我們管理資料庫事務。
採用Spring,我們只需獲取連線,執行SQL,其他事物相關的都交給Spring來管理了。
4)Spring還能與第三方資料庫訪問框架(如Hibernate、JPA)無縫整合,而且自己也提供了一套JDBC訪問模板,來方便資料庫訪問。
5)Spring還能與第三方Web(如Struts、JSF)框架無縫整合,而且自己也提供了一套Spring MVC框架,來方便web層搭建。
6)Spring能方便的與Java EE(如Java Mail、任務排程)整合,與更多技術整合(比如快取框架)。