@Transactional(rollbackFor = Exception.class)注解放到private修飾的類上報錯

背景

有兩個方法中,更新數部分是相同的,打算把這一部分那重來,做一個公用的私有方法。
考慮數據一致性,原本每個方法都使用了@Transactional(rollbackFor = Exception.class)注解,保證失敗回滾,創建私有方法以后,將@Transactional(rollbackFor = Exception.class)注解放到私有方法上,但private卻報錯,提示去掉private

查詢原因

@Transactional 注解用于對方法或類進行事務管理。同時,它只能應用在 public 修飾的方法上,而不能應用在 private 修飾的方法上。

原因是該注解是通過 Spring AOP 來實現事務管理的。Spring AOP 使用動態代理來實現方法攔截和增強,但是私有方法在子類中是不可見的,無法被子類覆蓋和繼承,因此無法生成代理對象來進行事務管理。

如果你想在私有方法上應用事務聲明,有以下幾種解決方案:

  1. 將私有方法改為 public 或受保護的方法:可以將私有方法改為 public 或受保護的方法,然后在這些方法上添加 @Transactional 注解,使其能夠被 Spring AOP 攔截并應用事務管理。這樣一來,在類的外部仍然無法直接調用私有方法,只能通過公共的方法來觸發私有方法的執行。

  2. 通過 self-invocation 來間接調用私有方法:如果你確實需要在私有方法中應用事務,你可以通過類內部的其他方法來間接調用私有方法,并在這些公共方法上添加 @Transactional 注解。這樣,事務將應用到間接調用的私有方法上。

需要注意的是,在使用 @Transactional 注解時,還需確保配置了事務管理器和正確的事務相關的配置,以便使事務生效。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12989.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12989.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vj題單 激光炸彈 二維前綴和

題目鏈接&#xff1a;P2280 [HNOI2003] 激光炸彈 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 筆者答案&#xff1a; #include<stdio.h> int s[5005][5005]; int main () {int n,m;scanf("%d %d",&n,&m);int i,j;int x,y,v;int max;for(i 1;i &l…

洛谷P1364 醫院設置

P1364 醫院設置 題目描述 設有一棵二叉樹&#xff0c;如圖&#xff1a; 其中&#xff0c;圈中的數字表示結點中居民的人口。圈邊上數字表示結點編號&#xff0c;現在要求在某個結點上建立一個醫院&#xff0c;使所有居民所走的路程之和為最小&#xff0c;同時約定&#xff0c…

單元測試—BMI腳本設計

BMI例題如下&#xff1a; BMI中國計算標準&#xff1a;體質指數&#xff08;BMI&#xff09;體重&#xff08;kg&#xff09;身高^2&#xff08;m&#xff09; 例如&#xff1a;一個人的身高為1.75米,體重為68千克&#xff0c;他的BMI68/(1.75^2)22.2&#xff08;千克/米^2&a…

每日5題Day3 - LeetCode 11 - 15

每一步向前都是向自己的夢想更近一步&#xff0c;堅持不懈&#xff0c;勇往直前&#xff01; 第一題&#xff1a;11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int maxArea(int[] height) {//這道題比較特殊&#xff0c;因為兩邊是任意…

04、SpringBoot 源碼分析 - SpringApplication啟動流程四

SpringBoot 源碼分析 - SpringApplication啟動流程四 初始化基本流程SimpleApplicationEventMulticaster的multicastEvent廣播事件resolveDefaultEventType獲取ResolvableType實例ResolvableType的forInstance創建ResolvableType實例 開始廣播AbstractApplicationEventMulticas…

脈沖水路清洗機,全自動脈沖技術清除管道堵塞

邦注脈沖水路清洗機是一種高效的清洗設備&#xff0c;它利用全自動脈沖技術來清除管道內的堵塞和污垢。以下是對該設備的一些詳細描述&#xff1a; 全自動脈沖技術&#xff1a;脈沖水路清洗機采用了全自動脈沖技術&#xff0c;這是一種先進的清洗方法。該技術通過產生高強度的…

window10下安裝ubuntu系統以及docker使用

window10下安裝ubuntu系統以及docker使用 1. 啟用適用于Linux的Windwos子系統2.下載Linux內核更新包3.將 WSL 2 設置為默認版本4.安裝Ubuntu<br />直接去Microsoft store里面直接搜索Ubuntu進行安裝。5.可能出現的問題1.win10啟動ubuntu報錯 參考的對象類型不支持嘗試的操…

Linux|基礎環境開發工具使用(1)

目錄 Linux 軟件包管理器 yum 什么是軟件包 關于 rzsz 注意事項 查看軟件包 如何安裝軟件 如何卸載軟件 Linux編輯器-vim介紹 vi與vim的相同點 vi與vim區別 Linux 軟件包管理器 yum 什么是軟件包 在Linux下安裝軟件, 一個通常的辦法是下載到程序的源代碼, 并進行編譯…

【WebGPU】WebGPU 中的反應擴散計算著色器

在本教程中&#xff0c;我們將使用 WebGPU 技術中的計算著色器實現圖像效果。更多精彩內容盡在數字孿生平臺。 程序結構 主要構建兩個 WebGPU 管道&#xff1a; 運行反應擴散算法多次迭代的計算管道&#xff08;js/rd-compute.js 和 js/shader/rd-compute-shader.js&#xff…

react 渲染引擎經歷了那些迭代

React 渲染引擎經歷了多個迭代&#xff0c;主要集中在改進 Virtual DOM 的實現和優化渲染性能方面。以下是一些 React 渲染引擎的主要迭代&#xff1a; React Fiber 架構&#xff1a;React 16 引入了 Fiber 架構&#xff0c;這是一個重新實現的渲染引夠更好地支持異步渲染。 S…

script標簽以及defer和async屬性

1. <script>標簽 將JavaScript代碼嵌入到HTML中主要方式是使用<script>元素。 使用<script>的方式有兩種&#xff1a; &#xff08;1&#xff09;直接在網頁中嵌入JavaScript代碼&#xff1a; <script>function sayHi() {console.log("Hi"…

Leetcode—2244. 完成所有任務需要的最少輪數【中等】

2024每日刷題&#xff08;136&#xff09; Leetcode—2244. 完成所有任務需要的最少輪數 實現代碼 class Solution { public:int minimumRounds(vector<int>& tasks) {unordered_map<int, int> map;for(int task: tasks) {map[task];}int ans 0;// freq 1 …

【前端】CSS基礎(3)

文章目錄 前言1. CSS常用元素屬性1.1 字體屬性1.1.1 字體1.1.2 字體大小1.1.3 字體顏色1.1.4 字體粗細1.1.5 文字樣式 前言 這篇博客僅僅是對CSS的基本結構進行了一些說明&#xff0c;關于CSS的更多講解以及HTML、Javascript部分的講解可以關注一下下面的專欄&#xff0c;會持續…

c++父類指針指向子類

有一個常見的c題&#xff0c;就是父類和子類的構造函數和析構函數分別調用順序&#xff1a; 父類構造函數子類構造函數子類析構函數父類析構函數 以及父類中的函數在子類中重新實現后&#xff0c;父類指針指向子類后&#xff0c;該指針調用的函數是父類中的還是子類中的&…

震撼發布!GPT-4o 上線!

5 月 14日凌晨一點&#xff0c;OpenAI 發布了 GPT-4o&#xff01; 新模型的功能簡單概括就是&#xff1a;更快、更智能、更像人類。 秉承著持續更新的態度&#xff0c;Hulu AI 快速接入 GPT-4o 啦&#xff01; 繼 5 月份上線 Suno 之后&#xff0c;這次是 Hulu AI 的又一重大…

vue3專欄項目 -- 六、上傳組件(上)

1、上傳組件需求分析 我們還需要新建和展示文章&#xff0c;新建文章自然是發送post請求&#xff0c;同時在post中自帶對應的數據&#xff0c;展示文章就是根據id取出已有的數據并且展示出來。 這里有一個難點就是上傳組件&#xff0c;上傳文件是App應用中最基本的需求&#…

Socks5:網絡世界的隱形斗篷

在數字化時代&#xff0c;網絡隱私和安全已成為人們日益關注的話題。Socks5&#xff0c;作為一種代理協議&#xff0c;為用戶在網絡世界中的匿名性提供了強有力的支持。本文將從Socks5的多個方面&#xff0c;深入探討這一技術如何成為網絡世界的“隱形斗篷”。 一、Socks5的基本…

linux基礎指令講解(ls、pwd、cd、touch、mkdir)

&#x1fa90;&#x1fa90;&#x1fa90;歡迎來到程序員餐廳&#x1f4ab;&#x1f4ab;&#x1f4ab; 主廚&#xff1a;邪王真眼 主廚的主頁&#xff1a;Chef‘s blog 所屬專欄&#xff1a;c大冒險 總有光環在隕落&#xff0c;總有新星在閃爍 這個是我們今天要用到的初始…

P8805 [藍橋杯 2022 國 B] 機房

P8805 [藍橋杯 2022 國 B] 機房 分析 是一道lca題目&#xff0c;可以直接套模板 前綴和處理點權 具體思路&#xff1a; 1.n臺電腦用n-1條網線相連&#xff0c;任意兩個節點之間有且僅有一條路徑&#xff08;拆分成各自到公共祖先節點的路徑——lca&#xff09;&#xff1b;…

Delphi7:SuperObject 的示例

SuperObject 不是一個 Delphi 7 自帶或官方的庫&#xff0c;但可能是指一些開源的 JSON 解析庫&#xff0c;比如 superobject 或 dwscript 中的 SuperObject。這些庫通常用于解析和生成 JSON 數據。 以下是一個基于假設的 SuperObject 用法概述&#xff0c;因為不同的庫可能有…