Spring框架是一款開源java平臺。建立於2003年,輕量級框架(基本版本只有2M)。java
使用Spring優勢:web
(1) 使用POJOs開發,再也不須要EJB容器;若是必要,僅須要Tomcat或其餘servlet容器數據庫
(2) 模塊化組織,只需關注用到的模塊express
(3) 高度複用,ORM框架、日誌框架、Quartz、JDK timers編程
(4) 測試便捷,POJOs注入測試數據緩存
(5) MVC web框架,可支持Struts或其餘小衆框架tomcat
(6) Spring提供API,轉化異常(JDBC, Hibernate, or JDO)爲不檢查異常安全
(7) 輕量化IoC容器,適用於CPU、Mem資源有限的機器服務器
(8) 事務管理接口網絡
DI技術
Spring框架最著名的特徵,IoC概念的典型實現。
AOP(Aspect Oriented Programming)面向切面編程
Spring的另外一個關鍵技術。cross-cutting concerns,即應用擴展只多點,且這些「橫切關注點」與業務邏輯剝離。面向切面編程的例子:日誌、聲明式事務、安全、緩存等。
Spring支持最大20多個模塊,根據所需選擇便可
Core Container
Core |
提供最基本框架功能,包括IoC、依賴注入等 |
|
Bean |
BeanFactory 工廠模式 |
|
Context |
以Core和Bean模塊爲基礎,訪問任何對象的媒介;ApplicationContext |
|
SpEL |
provides a powerful expression language for querying and manipulating an object graph at runtime |
|
Data Access/Integration
JDBC |
提供JDBC抽象層 |
|
ORM |
提供對象關聯映射API 如JPA、JDO、Hibernate、iBatis的整合層 |
|
OXM |
提供對象/XMLg關聯映射抽象層,支持JAXB、Castor、XMLBeans、JiBX and XStream |
|
JMS |
Java Messaging Service |
|
Transaction |
支持 面向過程和聲明式事務管理 |
|
Web
AOP |
切面編程(定義方法攔截器和切點,解耦功能代碼) |
|
Web-MVC |
Model-View-Controller 實現 |
|
Web-Socket |
support for WebSocket-based, two-way communication between the client and the server in web applications |
|
Web-Portlet |
provides the MVC implementation to be used in a portlet environment and mirrors the functionality of Web-Servlet module |
|
其餘
Web |
web功能基礎模塊、IoC容器和麪向web application context初始化 |
|
Aspects |
AspectJ |
|
Instrumentation |
類裝飾、類加載 |
|
Messaging |
支持STOMP協議 |
|
Test |
JUnit or TestNG frameworks |
|
J2EE中容器充當中間件的角色,主要包括:WEB容器、EJB容器。
Web容器
給應用程序組建(JSP、SERVLET)提供一個環境,JSP、Servlet直接與容器中的環境變量接口交互,沒必要關注其餘系統問題。經常使用Web服務器:tomcat、webloggc、WEBSPHERE。這些容器接口遵照J2EE規範WEB APPLICATION 標準。
EJB容器(Enterprise java bean 容器)
給運行其中的EJB組建提供各類管理功能(郵件服務、事務管理)。EJB容器與Web容器原理大體相同,區別是被隔離的外界環境,Web實現與基於Http請求交互(Servet沒必要關心Http細節,直接引用session、request、response),而EJB容器主要是與數據庫、其餘服務交互(EJB組件沒必要關心數據庫鏈接速度、事務控制)。
官方解釋:商務軟件的核心部分是它的業務邏輯。業務邏輯抽象了整個商務過程的流程,並使用計算機語言將他們實現。
J2EE 對於這個問題的處理方法是將業務邏輯從客戶端軟件中抽取出來,封裝在一個組件中。這個組件運行在一個獨立的服務器上,客戶端軟件經過網絡調用組件提供的服務以實現業務邏輯,而客戶端軟件的功能單純到只負責發送調用請求和顯示處理結果。在J2EE 中,這個運行在一個獨立的服務器上,並封裝了業務邏輯的組件就是EJB(Enterprise JavaBean)組件。
EJB底層實現:
EJB 是運行在獨立服務器上的組件,客戶端是經過網絡對EJB 對象進行調用的。在Java中,可以實現遠程對象調用的技術是RMI,而EJB 技術基礎正是RMI。經過RMI 技術,J2EE將EJB 組件建立爲遠程對象,客戶端就能夠經過網絡調用EJB 對象了
對象(Object):
在java的世界裏,對象是經過屬性和方法來分別對應事物所具備的靜態屬性和動態屬性.
類(Class):
用於描述同一類型的對象的一個抽象的概念.
組件(component):
組件也是抽象的概念,能夠理解爲一些符合某種規範的類組合在一塊兒就構成了組件。他能夠提供某些特定的功能。J2EE來講,有什麼servlet,jsp, javabean,ejb都是組件。但實際他們都是類,只不過有他們特殊的規定。組件和類的關係:符合某種規範的類的組合構成組件
容器(Container):
容器也叫作組件容器,組件容器是一種比較特殊的組件,它能夠包含其餘的組件。咱們能夠把組件放在組件容器中。
框架(framework):
就是某種應用的半成品,就是一組組件,供你選用完成你本身的系統.java框架就是一些類和接口的集合,經過這些類和接口協調來完成一系列的程序實現。框架又叫作開發中的半成品,它不能提供整個WEB應用程序的全部東西,可是有了框架,咱們就能夠集中精力進行業務邏輯的開發而不用去關心它的技術實現以及一些輔助的業務邏輯。咱們熟知的Structs和Spring就是表示層和業務層框架的表明。
架構:
軟件架構描述的對象是直接構成系統的抽象組件。各個組件之間的鏈接則明確和相對細緻地描述組件之間的通信。在實現階段,這些抽象組件被細化爲實際的組件,好比具體某個類或者對象。在面向對象領域中,組件之間的鏈接一般用接口()來實現
框架不是構架。架構肯定了系統總體結構、層次劃分,不一樣部分之間的協做等設計考慮。框架比架構更具體,更偏重於技術涉嫌。對於同一架構(好比Web開發中的MVC),能夠經過多種框架來實現。