最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何解決Spring事務(wù)注解@Transactional在類內(nèi)部方法調(diào)用不生效

 更新時間:2024年08月19日 10:50:11   作者:MiracleSang  
這篇文章主要介紹了如何解決Spring事務(wù)注解@Transactional在類內(nèi)部方法調(diào)用不生效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Spring事務(wù)注解@Transactional在類內(nèi)部方法調(diào)用不生效

問題現(xiàn)象

package cn.sw.study.web.service.impl;
import cn.sw.study.web.dao.UserMapper;
import cn.sw.study.web.model.User;
import cn.sw.study.web.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;

/**
 * 用戶業(yè)務(wù)類
 */
@Service
public class UserServiceImpl implements UserService{

    @Autowired
    UserMapper userMapper;

    public void addInfo() {
        addOne();
    }

    @Transactional
    public void addOne() {
        User record = new User();
        record.setLoginName("tom");
        record.setPwd("111111");
        record.setMobile("13913913913");
        record.setUsable(1);
        record.setCreateTime(new Date());
        userMapper.insertSelective(record);
        int i = 1/0;    // 測試事務(wù)的回滾
    }
}

如果從外部類直接調(diào)用addOne方法,則事務(wù)是可以正常生效的。

此時addInfo方法上沒有事務(wù)注解,addOne方法上有事務(wù)注解,運行addInfo調(diào)用addOne方法,不會產(chǎn)生事務(wù),測試數(shù)據(jù)遇到異常沒有回滾。

問題原因

在默認情況下,大部分使用spring的事務(wù)都是使用代理的模式,代理實現(xiàn)的事務(wù)有一定的局限性:

僅有在公有方法上標(biāo)記的@Transactional有效;

僅有外部方法調(diào)用過程才會被代理截獲,事務(wù)才會有效,也就是說,一個方法調(diào)用本對象的另一個方法,沒有通過代理類,事務(wù)也就無法生效。

解決辦法

手動獲取代理類之后再調(diào)用

((UserServiceImpl)AopContext.currentProxy()).addOne();

問題解決!

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MybatisPlus 主鍵策略之type=IdType.ASSIGN_ID等詳解

    MybatisPlus 主鍵策略之type=IdType.ASSIGN_ID等詳解

    雪花算法(雪花)是微博開源的分布式ID生成算法其核心思想就是:使用一個64位的長型的數(shù)字作為全局唯一ID,這篇文章主要介紹了MybatisPlus 主鍵策略(type=IdType.ASSIGN_ID等詳解),需要的朋友可以參考下
    2024-04-04
  • idea如何查看安裝插件的位置

    idea如何查看安裝插件的位置

    這篇文章主要介紹了idea如何查看安裝插件的位置問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java中的異步與線程池解讀

    Java中的異步與線程池解讀

    這篇文章主要介紹了Java中的異步與線程池,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式

    JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式

    這篇文章主要介紹了JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 一段代碼搞懂關(guān)于Java中List、Set集合及Map的使用

    一段代碼搞懂關(guān)于Java中List、Set集合及Map的使用

    這篇文章主要介紹了關(guān)于Java中List、Set集合及Map的使用及l(fā)ist,set和map三者的區(qū)別介紹,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • Spring事務(wù)中的事務(wù)傳播行為使用方式詳解

    Spring事務(wù)中的事務(wù)傳播行為使用方式詳解

    Spring框架作為一個輕量級的開源框架,在企業(yè)應(yīng)用開發(fā)中被廣泛使用,在Spring事務(wù)管理中,事務(wù)傳播行為是非常重要的一部分,它定義了方法如何參與到已經(jīng)存在的事務(wù)中或者如何開啟新的事務(wù),本文將詳細介紹Spring事務(wù)中的幾種事務(wù)傳播行為,詳細講解具體使用方法
    2023-06-06
  • Spring?Security自定義認證邏輯實例詳解

    Spring?Security自定義認證邏輯實例詳解

    這篇文章主要給大家介紹了關(guān)于Spring?Security自定義認證邏輯的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-01-01
  • SpringBoot之自動裝配原理及解讀

    SpringBoot之自動裝配原理及解讀

    Spring Boot自動裝配原理:通過@SpringBootApplication、@ComponentScan和@EnableAutoConfiguration注解,掃描主配置類所在包及其子包下的類,并加載符合條件的自動配置類,實現(xiàn)Spring IOC容器的自動配置
    2026-02-02
  • mybatis-plus實現(xiàn)多表查詢的示例代碼

    mybatis-plus實現(xiàn)多表查詢的示例代碼

    MyBatis-Plus提供了多種方式實現(xiàn)多表查詢,包括使用注解、MyBatis-PlusJoin擴展和XML配置文件,每種方法都有其適用場景和優(yōu)勢,本文就來具體介紹一下,感興趣的可以了解一下
    2024-11-11
  • java和jsp中的request使用示例

    java和jsp中的request使用示例

    這篇文章主要介紹了java和jsp中的request使用示例,需要的朋友可以參考下
    2014-02-02

最新評論

兰考县| 荃湾区| 同德县| 凉山| 青铜峡市| 江城| 卓资县| 突泉县| 雷波县| 湖南省| 资中县| 泗阳县| 临朐县| 鄂托克前旗| 河南省| 唐山市| 沛县| 湟中县| 邢台县| 黔西| 金昌市| 辽源市| 建湖县| 宁武县| 阿鲁科尔沁旗| 富源县| 金堂县| 大新县| 梁山县| 阿拉善左旗| 汕头市| 沭阳县| 庐江县| 和硕县| 应城市| 云和县| 元江| 汶上县| 临江市| 洞口县| 九寨沟县|