Spring事务管理中常见问题及解决策略有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1761个文字,预计阅读时间需要8分钟。
在接触Spring相关知识点之前,我几乎没有进行过具体的研究。例如,对于Spring的事务管理,并不是没有使用,而是曾简单地在某些需要事务处理的场景上,通过增加事务注解来实现事务功能。这仅仅是一种随用随加的方式(直至)。
有些spring相关的知识点之前一直没有仔细研究:比如spring的事务,并不是没有使用,也曾经简单的在某些需要事务处理的方法上通过增加事务注解来实现事务功能,仅仅是跟随使用(甚至并未测试过事务的正确性),至于如何在项目中配置事务,如何才能将事务写正确,事务的其它的一些原理性的东西从未花时间研究。最近同事正好抛出了一个问题,借此机会学习了一遍。
问题一:增加了readOnly=true的事务中包含写操作,为什么线上运行这段代码是正常的呢?
@Transactional(readOnly = true) public Integer getUID(String key, String type) { keyGeneratorDao.insert(key, type); keyGeneratorDao.update(key, type); return keyGeneratorDao.select(key, type); }
我为什么对这个问题感兴趣?
不懂这个readOnly参数的含义,之前写@Transactional的注解,那都是使用的默认值,不带显示参数。提出配置了readOnly参数后,理论上应该程序报错而实际上没有报错,想搞清楚为什么。
本文共计1761个文字,预计阅读时间需要8分钟。
在接触Spring相关知识点之前,我几乎没有进行过具体的研究。例如,对于Spring的事务管理,并不是没有使用,而是曾简单地在某些需要事务处理的场景上,通过增加事务注解来实现事务功能。这仅仅是一种随用随加的方式(直至)。
有些spring相关的知识点之前一直没有仔细研究:比如spring的事务,并不是没有使用,也曾经简单的在某些需要事务处理的方法上通过增加事务注解来实现事务功能,仅仅是跟随使用(甚至并未测试过事务的正确性),至于如何在项目中配置事务,如何才能将事务写正确,事务的其它的一些原理性的东西从未花时间研究。最近同事正好抛出了一个问题,借此机会学习了一遍。
问题一:增加了readOnly=true的事务中包含写操作,为什么线上运行这段代码是正常的呢?
@Transactional(readOnly = true) public Integer getUID(String key, String type) { keyGeneratorDao.insert(key, type); keyGeneratorDao.update(key, type); return keyGeneratorDao.select(key, type); }
我为什么对这个问题感兴趣?
不懂这个readOnly参数的含义,之前写@Transactional的注解,那都是使用的默认值,不带显示参数。提出配置了readOnly参数后,理论上应该程序报错而实际上没有报错,想搞清楚为什么。

