Spring核心篇章: Spring 5 中文解析之核心篇-IoC容器 Spring 5 中文解析核心篇-IoC容器之依賴關系 Spring 5 中文解析核心篇-IoC容器之Bean作用域 Spring 5 中文解析核心篇-IoC容器之自定義Bean性質 Spring 5 中文解析核心篇-IoC容器之BeanDefinition繼承與容器拓展點 Spring 5 中文解析核心篇-IoC容器之基于注解的容器配置 Spring 5 中文解析核心篇-IoC容器之類路徑掃描群組件管理 Spring 5 中文解析核心篇-IoC容器之JSR330标準注解 Spring 5 中文解析核心篇-IoC容器之基于Java容器配置 Spring 5 中文解析核心篇-IoC容器之Environment抽象 Spring 5 中文解析核心篇-IoC容器之ApplicationContext與BeanFactory Spring 5 中文解析核心篇-IoC容器之Resources Spring 5 中文解析核心篇-IoC容器之資料校驗、資料綁定和類型轉換 Spring 5 中文解析核心篇-IoC容器之SpEL表達式 Spring 5 中文解析核心篇-IoC容器之AOP程式設計(上) ") Spring 5 中文解析核心篇-IoC容器之AOP程式設計(下) Spring 5 中文解析核心篇-IoC容器之Spring AOP API Spring測試篇章: Spring 5 中文解析測試篇-Spring測試 Spring 5 中文解析核心篇-內建測試之概要和內建測試注解 Spring 5 中文解析核心篇-內建測試之TestContext(上) Spring 5 中文解析核心篇-內建測試之TestContext(中) Spring 5 中文解析測試篇-內建測試之TestContext(下) Spring 5 中文解析測試篇-Spring MVC測試架構 Spring 5 中文解析測試篇-WebTestClient 完整 電子書位址 全面的事務支援是使用Spring Framework的最令人信服的原因之一。Spring架構為事務管理提供了一緻的抽象,具有以下優點:
- 跨域不同僚物API的一緻性程式設計模型,例如:Java事物
、API(JTA)
JDBC
、Java持久化Hibernate
。API(JPA)
- 支援 聲明式事物
- 比複雜的事物API更簡單的 程式設計式 事物管理。
- 與Spring的資料存儲抽象優秀內建。
下面的部分描述Spring架構的事物特性和技術:
- Spring架構的事務支援模型 的優點描述了為什麼你将使用Spring 架構的事務抽象而不是EJB容器管理的事務(CMT)或選擇通過諸如
之類的專有API驅動本地事務的原因。Hibernate
- 了解 Spring 架構事務抽象 概述了核心類,并描述了如何從各種來源配置和擷取
執行個體。DataSource
- 将資源與事務同步 描述了應用程式代碼如何確定正确建立、重用和清理資源。
- 聲明式事務管理 描述了對聲明式事務管理的支援。
- 程式設計式事務管理 涵蓋對程式設計式(即,顯式編碼)事務管理的支援。
- 事務綁定事件 描述了如何在事務中使用應用程式事件。
本章還讨論了最佳實踐,
應用程式伺服器內建以及
常見問題的解決方案1.1 Spring架構的事物支援模型的優勢
傳統上,Java EE開發人員在事務管理中有兩種選擇:全局或本地事務,這兩者都有很大的局限性。下兩節将回顧全局和本地事務管理,然後讨論Spring架構的事務管理支援如何解決全局和本地事務模型的局限性。
1.1.1 全局事物
全局事務使你可以使用多個事務資源,通常是關系資料庫和消息隊列。應用伺服器通過JTA管理全局事務,而
JTA
是一個繁瑣的API(部分是由于其異常模型)。此外,通常需要從
JNDI
派生
JTA
UserTransaction
,這意味着你還需要使用
JNDI
才能使用
JTA
。全局事務的使用限制了應用程式代碼的任何潛在重用,因為
JTA
通常僅在應用程式伺服器環境中可用。
以前,使用全局事務的首選方法是通過
EJB
CMT
(容器管理的事務)。
CMT
是聲明式事務管理的一種形式(與程式設計式事務管理不同)。盡管使用
EJB
本身必須使用
JNDI
,但是
EJB
CMT
消除了與事務相關的
JNDI
查找的需要。它消除了大多數(但不是全部)編寫Java代碼來控制事務的需求。重大缺點是
CMT
與
JTA
和應用程式伺服器環境相關聯。而且,僅當選擇在
EJB
中(或至少在事務性EJB幕後)實作業務邏輯時,此功能才可用。
EJB
的缺點是如此之大,以至于這不是一個有吸引力的提議,特别是在面對聲明性事務管理的引人注目的替代方案時。
1.1.2 本地事物
本地事務是特定于資源的,例如與
JDBC
連接配接關聯的事務。本地事務可能更易于使用,但有一個明顯的缺點:它們不能跨多個事務資源工作。例如,使用
JDBC
連接配接管理事務的代碼不能在全局
JTA
事務中運作。因為應用程式伺服器不參與事務管理,是以它無法幫助確定多個資源之間的正确性。(值得注意的是,大多數應用程式使用單個事務資源。)另一個缺點是本地事務侵入了程式設計模型。
1.1.3 Spring架構的一緻性程式設計模型
Spring解決了全局事物和本地事物的缺陷。它使應用程式開發人員可以在任何環境中使用一緻的程式設計模型。你隻需編寫一次代碼,即可從不同環境中的不同僚務管理政策中受益。Spring架構提供了聲明式和程式設計式事務管理。大多數使用者喜歡聲明式事務管理,在大多數情況下我們建議這樣做。
通過程式設計式事務管理,開發人員可以使用Spring架構事務抽象,該抽象可以在任何基礎事務基礎架構上運作。使用首選的聲明式模型,開發人員通常編寫很少或沒有編寫與事務管理相關的代碼,是以,它們不依賴于Spring架構事務API或任何其他事務API。
你是否需要一個應用程式伺服器來進行事務管理
Spring架構的事務管理支援更改了有關企業Java應用程式何時需要應用伺服器的傳統規則。
特别是,你不需要純粹用于通過
進行聲明式事務的應用程式伺服器。實際上,即使你的應用伺服器具有強大的
EJB
功能,你也可能會決定,與
JTA
EJB
CMT
相比,Spring架構的聲明式事務提供更多的功能和更高效的程式設計模型。
通常,僅當你的應用程式需要處理跨多個資源的事務時才需要應用程式伺服器的
功能,而這并不是許多應用程式所必需的。許多高端應用程式使用單個高度可擴充的資料庫(例如
JTA
Oracle
)來代替。獨立事務管理器(例如
RAC
Atomikos
和
Transactions
)是其他選擇。當然,你可能需要其他應用程式伺服器功能,例如Java消息服務(
JOTM
)和Java EE連接配接器體系結構(
JMS
JCA
)。
Spring架構使你可以選擇何時将應用程式擴充到完全加載的應用程式伺服器。不再使用
EJB
或
CMT
的唯一選擇是使用本地事務(例如
JTA
連接配接上的事務)編寫代碼,并且如果你需要将該代碼在全局的、容器管理的事務中運作,則面臨大量的工作。使用Spring架構,僅需要更改配置檔案中的某些Bean定義(而不是代碼)。
JDBC
作者
個人從事金融行業,就職過易極付、思建科技、某網約車平台等重慶一流技術團隊,目前就職于某銀行負責統一支付系統建設。自身對金融行業有強烈的愛好。同時也實踐大資料、資料存儲、自動化內建和部署、分布式微服務、響應式程式設計、人工智能等領域。同時也熱衷于技術分享創立公衆号和部落格站點對知識體系進行分享。關注公衆号:青年IT男 擷取最新技術文章推送!
部落格位址:
http://youngitman.techCSDN:
https://blog.csdn.net/liyong1028826685微信公衆号:

技術交流群: