解决Springboot不能自动提交数据库连接问题

 更新时间:2024年09月29日 08:42:56   作者:谢月  
在使用SSM框架开发时,若在同一Service内部方法间互相调用,直接使用this关键字会导致事务管理失效,从而引发如数据库连接不足等问题,原因是通过this调用不会经过Spring的代理,因此不会自动进行事务处理

一、问题描述

之前一直用的公司框架,所以SSM框架不是特别熟悉,然后新项目采用SSM狂架搭建的。

在其中一个需求中,我在service层类的方法内部调用了该类的其他方法:

并且是采用this调用该类的其他方法。

如下:

就是这波操作使得功能一上线就直接抛出异常,数据库连接不够。

后经过排查采用this调用的方法不会走spring框架自行提交数据库连接,必须手动提交数据库连接。

因此就会使得当访问量达到一定量就会抛出异常。

二、修改方式一(交由spring提交事务)

只需要将用this调用的方式都改如下即可:将实例交由spring管理,即可自动提交。

三、修改方式二(手动提交事务)

@Resource(name="transactionManager")
private DataSourceTransactionManager transactionManager;

DefaultTransactionDefinition transDefinition = new DefaultTransactionDefinition();
//开启新事物
transDefinition.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus transStatus = transactionManager.getTransaction(transDefinition);
try {
    //TODO
    transactionManager.commit(transStatus);
} catch (Exception e) {
    transactionManager.rollback(transStatus);
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解SpringBoot的Run方法

    详解SpringBoot的Run方法

    本文给大家介绍了SpringBoot的Run方法,文中通过实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-10-10
  • Maven指定JDK版本的实现

    Maven指定JDK版本的实现

    本文主要介绍了Maven指定JDK版本的实现,主要有两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • Spring Boot整合Mybatis Plus和Swagger2的教程详解

    Spring Boot整合Mybatis Plus和Swagger2的教程详解

    这篇文章主要介绍了Spring Boot整合Mybatis Plus和Swagger2的教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • IDEA整合Dubbo+Zookeeper+SpringBoot实现

    IDEA整合Dubbo+Zookeeper+SpringBoot实现

    初学者,想自己动手做一个简单的demo,本文主要介绍了IDEA整合Dubbo+Zookeeper+SpringBoot实现,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • JAVA 注解详解及简单实例

    JAVA 注解详解及简单实例

    这篇文章主要介绍了JAVA 注解详解及简单实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • Java实现两人五子棋游戏(四) 落子动作的实现

    Java实现两人五子棋游戏(四) 落子动作的实现

    这篇文章主要为大家详细介绍了Java实现两人五子棋游戏,落子动作的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Java字符串操作全解析之语法、示例与应用场景分析

    Java字符串操作全解析之语法、示例与应用场景分析

    在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字符串处理技巧,轻松应对笔试面试高频题目,感兴趣的朋友一起看看吧
    2025-04-04
  • Java ArrayAdapter用法案例详解

    Java ArrayAdapter用法案例详解

    这篇文章主要介绍了Java ArrayAdapter用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Java中的权重算法(如Dubbo的负载均衡权重)详解

    Java中的权重算法(如Dubbo的负载均衡权重)详解

    这篇文章主要介绍了Java中的权重算法(如Dubbo的负载均衡权重)详解,负载均衡,其含义就是指将负载进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务,需要的朋友可以参考下
    2023-08-08
  • java如何强制删除java程序占用的文件

    java如何强制删除java程序占用的文件

    这篇文章主要介绍了java如何强制删除java程序占用的文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06

最新评论