天天看點

《Spring 5 官方文檔》1. Spring入門指南(一)

譯者注:為了友善了解,本譯文裡面部分名詞翻譯如下,如有異議,請在評論區指出。

dependency injection — 依賴注入

inversion of control – 控制反轉

instrumentation – 植入

aop — 面向切面​​的程式設計

milestones – 裡程碑

snapshots – 快照

artifact — 工件(這個詞在文中大部分地方都沒有翻譯,用過maven或gradle的都明白,如果有更好的中文翻譯,請寫在評論區)

本參考指南提供了有關spring framework的詳細資訊。它全面的介紹了spring的所有的功能,以及spring涉及的基礎概念(如“依賴注入” “dependency injection”)。

spring 架構是一個java平台,它為開發java應用程式提供全面的基礎架構支援。spring負責基礎架構,是以您可以專注于應用程式的開發。

spring可以讓您從“plain old java objects”(pojo)中建構應用程式和通過非侵入性的pojo實作企業應用服務。此功能适用于java se的程式設計模型,全部的或部分的适應java ee模型。

這些例子告訴你,作為一個應用程式開發人員,如何從spring平台中受益:

寫一個java方法執行資料庫事務,而無需處理具體事務的apis。

寫一個本地java方法去遠端調用,而不必處理遠端調用的apis。

寫一個本地java方法實作管理操作,而不必處理jmx apis。

寫一個本地java方法實作消息處理,而不必處理jms apis。

java應用程式-這是一個寬松的術語,它包括的範圍從受限的嵌入式應用程式到n層的伺服器端企業應用程式-通常組成程式的對象互相協作而構成正确的應用程式。是以,在一個應用程式中的對象彼此具有依賴關系(dependencies)。

雖然java平台提供了豐富的應用程式開發功能,但它缺乏将基本的子產品組織成一個整體的方法,而将該任務留給了架構師和開發人員。雖然你可以使用如工廠,抽象工廠,builder,裝飾器和service locator等 設計模式來建構各種類和對象執行個體,使他們組合成應用程式,但這些模式無非隻是:最佳實踐賦予的一個名字,以及這是什麼樣的模式,應用于哪裡,它能解決的問題等等。 模式是您必須在應用程式中自己實作的形式化的最佳實踐。

spring架構控制反轉(ioc)元件通過提供一系列的标準化的方法把完全不同的元件組合成一個能夠使用的應用程式來解決這個問題。spring架構把形式化的設計模式編寫為優秀的對象,你可以容易的內建到自己的應用程式中。許多組織和機構使用spring架構,以這種方式(使用spring的模式對象)來設計健壯的,可維護的應用程式。

背景

spring架構的功能被有組織的分散到約20個子產品中。這些子產品分布在核心容器,資料通路/內建,web,aop(面向切面​​的程式設計),植入(instrumentation),消息傳輸和測試,如下面的圖所示。

圖2.1 spring架構概述

《Spring 5 官方文檔》1. Spring入門指南(一)

單獨的spring-aspects子產品,提供了與aspectj的內建。

spring-instrument子產品提供了類植入(instrumentation)支援和類加載器的實作,可以應用在特定的應用伺服器中。該spring-instrument-tomcat 子產品包含了支援tomcat的植入代理。

spring架構4包括spring-messaging(消息傳遞子產品),其中包含來自spring integration的項目,例如,message,messagechannel,messagehandler,和其他用來傳輸消息的基礎應用。該子產品還包括一組用于将消息映射到方法的注釋(annotations),類似于基于spring mvc注釋的程式設計模型。

資料通路/內建層由jdbc,orm,oxm,jms和事務子產品組成。

web層由spring-web,spring-webmvc和spring-websocket 子產品組成。

spring-web子產品提供基本的面向web的內建功能,例如多部分檔案上傳功能,以及初始化一個使用了servlet偵聽器和面向web的應用程式上下文的ioc容器。它還包含一個http用戶端和spring的遠端支援的web相關部分。

之前描述的構模組化塊使spring成為許多應用場景的理性選擇,從在資源受限裝置上運作的嵌入式應用程式到使用spring的事務管理功能和web架構內建的全面的企業應用程式。

圖2.2 典型的成熟完整的spring web應用程式

《Spring 5 官方文檔》1. Spring入門指南(一)

圖2.3使用第三方web架構的spring中間層

《Spring 5 官方文檔》1. Spring入門指南(一)

有時情況不允許你完全切換到不同的架構。 spring架構并不強制您使用其中的一切;這不是一個全有或全無的解決方案。使用struts,tapestry,jsf或其他ui架構建構的現有前端可以與基于spring的中間層內建,進而允許您使用spring事務功能。您隻需要使用applicationcontext連接配接您的業務邏輯,并使用webapplicationcontext來內建您的web層。

圖2.4 遠端使用場景

《Spring 5 官方文檔》1. Spring入門指南(一)

當您需要通過web服務通路現有代碼時,你可以使用spring的 hessian-,rmi-或httpinvokerproxyfactorybean類。啟用對現有應用程式的遠端通路并不困難。

圖2.5  ejbs – 包裝現有的pojos

《Spring 5 官方文檔》1. Spring入門指南(一)