首頁 > Java > java教程 > 為什麼 @Transactional 不適用於私人 Spring Bean 方法?

為什麼 @Transactional 不適用於私人 Spring Bean 方法?

Barbara Streisand
發布: 2024-12-17 12:26:26
原創
224 人瀏覽過

Why Doesn't @Transactional Work on Private Spring Bean Methods?

私有方法上的Spring @Transactional 註解

如果@Transactional 註解應用於Spring bean 中的私人方法,則不會有什麼影響。這是因為負責為 Spring bean 建立代理的代理產生器在產生代理時忽略私有方法。

例如,考慮以下 Spring bean:

public class Bean {
    public void doStuff() {
        doPrivateStuff();
    }

    @Transactional
    private void doPrivateStuff() {

    }
}
登入後複製

當建立應用程式上下文後,將為 Bean 類別建立一個代理程式。但是,doPrivateStuff 方法上的 @Transactional 註解將被忽略,並且該方法將不會顯示配置的事務設定。

此行為記錄在 Spring 手冊第 10.5.6 章:

When using proxies, you should apply the @Transactional annotation only to methods with public visibility. If you do annotate protected, private or package-visible methods with the @Transactional annotation, no error is raised, but the annotated method does not exhibit the configured transactional settings. Consider the use of AspectJ (see below) if you need to annotate non-public methods.
登入後複製

以上是為什麼 @Transactional 不適用於私人 Spring Bean 方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板