參考文檔
先把文檔給下載下來,不然每次上官網(wǎng)查挺慢的(你懂的)由于準(zhǔn)備看的是分支是 4.x 所以就直接看對應(yīng)版本的 doc 吧
https://spring.io/projects/spring-framework#learn 官網(wǎng)的布局貌似改了些

選的 4.3.18 GA, GA 即 General Available 狀態(tài),表明這個版本已經(jīng)得到廣泛應(yīng)用了。


基本思想
Part I. Overview of Spring framework 中有這么一段話
The Spring Framework Inversion of Control (IoC) component addresses this concern by providing a formalized means of composing disparate components into a fully working application ready for use. The Spring Framework codifies formalized design patterns as first-class objects that you can integrate into your own application(s). Numerous organizations and institutions use the Spring Framework in this manner to engineer robust, maintainable applications.
this concern 指的是其他 java 框架所沒能解決的一個問題,java 應(yīng)用中有很多個對象,它們需要相互協(xié)作來完成程序的功能,但是如何將它們給聯(lián)系起來的任務(wù)則落到了架構(gòu)師和開發(fā)人員身上。雖然我們可以通過工廠、抽象工廠、裝飾器等設(shè)計模式來將多種多樣的類和實例對象組合成應(yīng)用的結(jié)構(gòu),但是模子相對來說還是比較固定,而且你還是得自己實現(xiàn)整個模子。
spring framework 則以 IOC 控制反轉(zhuǎn),或更通俗的說 DI “依賴注入” 為基調(diào),提供了一種標(biāo)準(zhǔn)的方式將各獨立的組件準(zhǔn)備好,直接提供給程序使用。
模塊
spring 的模塊很多,官方將它的各個模塊按照功能類別分組了,如下

分為:測試、核心容器、切面、消息、數(shù)據(jù)訪問/集成、web;其中上面藍(lán)色框的是我比較感興趣的部分。
-
Core Container 核心容器
- Beans 和 Core 是整個 spring 框架的基礎(chǔ),提供了 IOC 和 DI 特性。其中實現(xiàn)了工廠模式的 BeanFactory 解除了程序中組件的耦合。
- Context 上下文模塊,則是在 Beans 和 Core 兩個模塊的基礎(chǔ)上提供 spring 風(fēng)格的對象訪問模式;這類似 ServletContext 的概念,Servlet 上下文攜帶了一次 Http 請求的 request 和 response;而通過 Spring 上下文 ApplicationContext 能訪問其基礎(chǔ)模塊準(zhǔn)備好的了部件(通常叫 bean)。
- SpEL, Expression Language 提供了運行時查詢和操作對象的能力。
Aop Aspect Oriented Programming 面向切面,spring aop 實現(xiàn)了 aop 聯(lián)盟的規(guī)范接口。
-
Data Access/Integration 數(shù)據(jù)訪問模塊
- spring-jdbc 模塊簡化了原始 jdbc 編碼方式,并統(tǒng)一了各數(shù)據(jù)庫供應(yīng)商的錯誤碼
- spring-orm 集成了多種 orm 接口,包括 jpa,jdo 和 hibernate。
- spring-oxm 類似 orm, 不過是映射 xml 的;
- spring-jms (Java Message Service)包括消息的生產(chǎn)和消費,4.1版本之后它可以和 spring-messaging 集成
Web
和頁面相關(guān)的模塊,不過這兩年的工作基本以服務(wù)為主,頁面接觸的少咯
- spring-web 模塊集成了基本的 web 功能,如文件上傳、Servlet 監(jiān)聽器。
- spring-webmvc 模塊包含 mvc 模式的實現(xiàn)也提供 rest 服務(wù)的實現(xiàn)。
使用場景
-
使用第三方web框架, spring 并不限制你和其他框架一起使用;這個場景是很經(jīng)典的三層架構(gòu),只是展示層替換成了別的框架
-
遠(yuǎn)程調(diào)用場景,目前流行的服務(wù)類架構(gòu)則很類似這種的2層(api層 和 邏輯層)

