gpt4 book ai didi

java - 在@Transactional注释中设置默认事务管理器?

转载 作者:行者123 更新时间:2023-12-02 09:45:52 24 4
gpt4 key购买 nike

我有一个带有 JPA/Hibernate 的 Spring Boot 2.x 应用程序和 2 个独立的事务管理器:每个租户 1 个,应用程序范围 1 个。所有实体、存储库和服务都分离在不同的包中。

每当我在服务中使用 @Transactional 时,我都需要将 txManager 显式限定为 @Transactional(value = "tenantTransactionManager")@Transactional (值=“applicationTransactionManager”)

这非常冗长且容易出错,因为它们只是文字字符串。

有没有一种方法可以在包级别设置事务管理器,这样我就不必在每次使用时都显式设置它?

基于 Multiple transaction managers with @Transactional annotation 中给出的答案,我创建了一个 @TenantTransactional@ApplicationTransactional 元注释,但这不允许我设置 readOnly 标志,这是必要的 -方法。

最佳答案

给定the answer事实上,您已经有了 @TenantTransactional@ApplicationTransactional 您只需使用 alias对于只读。可以使用 @AliasFor 添加别名。

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

@AliasFor(attribute="readOnly", annotation=Transactional.class)
boolean readOnly() default false;
}

当然,您也可以对 @Transactional 注释的其他属性执行此操作。

关于java - 在@Transactional注释中设置默认事务管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56665811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com