gpt4 book ai didi

java - 使用 Spring Boot 处理事务隔离级别

转载 作者:行者123 更新时间:2023-12-02 10:43:12 31 4
gpt4 key购买 nike

我正在开发 Spring-Boot 应用程序并使用 Spring Boot 版本 1.5.9。

我有一个包含一组数据库插入的付款转账方法,我想将其设置为带有锁定的事务性以避免双重支出。所以我需要将隔离级别设置为Serialized。这就是我所做的:

@Transactional(isolation = Isolation.SERIALIZABLE)
public void transfer() {
...
}

问题是我在调用此方法时遇到以下异常:

{
"timestamp": 1539357851437,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.transaction.InvalidIsolationLevelException",
"message": "JtaTransactionManager does not support custom isolation levels by default - switch 'allowCustomIsolationLevels' to 'true'",
"path": "app/transfer"
}

总的来说,我对 Spring 很陌生,SpringBoot 似乎没有 XML 配置,我可以重写该配置来将 JtaTransactionManager bean 的allowCustomIsolationLevels 设置为 true。但相反,我应该使用 Java 注释和 @Bean 定义,但我不确定如何实现我的目标。

任何帮助将不胜感激!

最佳答案

如果您想使用 XML 文件进行配置,请在具有 @SprintBootApplication 注释的主类中添加以下内容:

@ImportResource("classpath:/static/context/name-of-context-file.xml")

这将从根目录为项目中的资源目录的路径导入 XML 文件。

据我所知 Spring's Documentation ,您需要考虑使用 DataSourceTransactionManager 或像我提到的那样使用 XML 文件,因为根据该文档(很像错误消息状态,但至少为您提供了设置选项)

JTA does not support custom isolation levels.

我知道我链接的页面很长,但如果您只是在页面上进行“自定义隔离”查找,它会将其范围缩小到三个选项,其中两个选项彼此相邻。

希望这有帮助。

关于java - 使用 Spring Boot 处理事务隔离级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52782947/

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