spring是否包含jta实现?

我看到类UserTransactionAdapter实现了UserTransaction,但是javax.transaction.UserTransaction在任何spring jar中都不存在。

另一方面,jboss运行时库中存在javax.transaction.UserTransaction,但实现在spring jar中。还有另一个UserTransaction(来自jbossxts-4.17.21.Final-redhat-2.jar)实现:UserTransactionImpl可以在jboss modules文件夹的jbossxts-4.17.21.Final-redhat-2.jar中找到。

谁可以给我解释一下这个 ?

最佳答案

不,Spring没有自己的JTA实现。它具有独立于JTA API的自己的事务管理基础结构,但是具有其自己的TransactionManager API的实现,该API可以使用(委托给)JTA TransactionManager。他自己的事务API还有其他实现,例如Hibernate-,JDO-,JPA-,DataSource,但是它们都将事务管理工作委托给基础事务基础结构。综上所述,您可以在应用程序中使用Spring事务管理基础结构,并在环境中将其委托给JTA TransactionManager,但是Spring本身不提供JTA TransactionManager实现。

Spring在其UserTransaction类中实现UserTransactionAdapter只是为了使JTA TransactionManager适应UserTransaction接口,因为UserTransactionTransactionManager接口的确切子集,而TransactionManager接口本身不会扩展UserTransaction接口。仅将其视为简单的帮助程序类,除了使一个接口适应另一个接口外,它什么也没做。

09-25 21:37