java – 如何扩展Spring Annotation @Transactional

前端之家收集整理的这篇文章主要介绍了java – 如何扩展Spring Annotation @Transactional前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我必须在我的webapp中使用3个不同的事务管理器.所以我根据Spring reference(第10.5.6.3节自定义快捷方式注释)编写了自己的注释.

一个注释(用于使用一个特定的事务管理器)如下所示:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.transaction.annotation.Transactional;

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional("customer")
public @interface CustomerTX{


}

使用自定义的@CustomerTX注释注释我的服务层时,一切正常.但是我必须为我的注释提供更多选项,比如readonly = true,rollbackFor =等等.因为你不能“扩展”一个注释(我真的只需要从Spring扩展@Transactional注释),这是什么正确的实现?

最佳答案
您将不得不创建几个自定义注释,我担心,每个用例都有一个注释,并使用您需要的@Transactional注释来注释每个注释.

或者你必须在AspectJ中编写自己的方面(从spring-aspects.jar扩展org.springframework.transaction.aspectj.AbstractTransactionAspect)来创建自己的事务逻辑.

猜你在找的Spring相关文章