加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 如何扩展Spring Annotation @Transactional

发布时间:2020-12-15 01:24:21 所属栏目:大数据 来源:网络整理
导读:我必须在我的webapp中使用3个不同的事务管理器.所以我根据Spring reference(第10.5.6.3节自定义快捷方式注释)编写了自己的注释. 一个注释(用于使用一个特定的事务管理器)如下所示: import java.lang.annotation.ElementType;import java.lang.annotation.Re

我必须在我的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)来创建自己的事务逻辑.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读