此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
用@Transactional
与 AspectJ
您还可以使用 Spring Framework 的@Transactional
在 Spring 之外支持容器。为此,首先使用@Transactional
注解 ,然后将您的应用程序与org.springframework.transaction.aspectj.AnnotationTransactionAspect
在spring-aspects.jar
文件。 您还必须使用事务配置方面 经理。 您可以使用 Spring Framework 的 IoC 容器来处理依赖注入方面。配置事务的最简单方法管理方面是使用<tx:annotation-driven/>
元素并指定mode
属性设置为aspectj
如用@Transactional
. 因为我们在这里专注于在 Spring 容器之外运行的应用程序,我们向您展示如何以编程方式做到这一点。
在继续之前,您可能需要阅读用@Transactional 和 AOP 分别。 |
以下示例演示如何创建事务管理器并配置AnnotationTransactionAspect
使用它:
-
Java
-
Kotlin
// construct an appropriate transaction manager
DataSourceTransactionManager txManager = new DataSourceTransactionManager(getDataSource());
// configure the AnnotationTransactionAspect to use it; this must be done before executing any transactional methods
AnnotationTransactionAspect.aspectOf().setTransactionManager(txManager);
// construct an appropriate transaction manager
val txManager = DataSourceTransactionManager(getDataSource())
// configure the AnnotationTransactionAspect to use it; this must be done before executing any transactional methods
AnnotationTransactionAspect.aspectOf().transactionManager = txManager
当你使用这个方面时,你必须注释实现类(或方法)在该类中或两者中),而不是类实现的接口(如果有)。方面J遵循 Java 的规则,即接口上的注释不会被继承。 |
这@Transactional
类上的注释指定默认事务语义用于执行类中的任何公共方法。
这@Transactional
类中方法的注释会覆盖类注释(如果存在)给出的默认transaction 语义。您可以注释任何方法无论可见性如何。
要使用AnnotationTransactionAspect
,您必须使用 AspectJ 构建您的应用程序(请参阅 AspectJ 开发指南)或使用加载时编织。有关使用 AspectJ 进行加载时编织的讨论,请参阅 Spring Framework 中使用 AspectJ 进行加载时编织。