spring事務操作後進行非同步操作

2021-10-08 15:50:57 字數 509 閱讀 8477

開發中有很多需要事務a操作後進行非同步b操作, 如傳送mq,或者開執行緒做其他事情. 有一部分的非同步操作需要查詢當前事務方法的儲存/修改資料. 所以, 如果直接在事務方法中呼叫非同步方法的話, 如果非同步方法的邏輯查詢對應的資料庫記錄時, 還沒有刷到資料庫, 那就會獲取不到最新值

解決方法

方案一: 呼叫非同步的方法不要寫在a操作的方法中,如下偽**

@responsebody

public string dowork()

但是這樣並不友好, 因為邏輯上這兩個操作應該是一起的, 以後維護的程式猿可能不知道這個. 

方案二: 使用spring的 transactionsynchronizationmanager 來保證在當前事務提交成功後執行非同步操作

@transactional

public string doworka()

});}

另外注意的是, 如果前面的業務邏輯傳送錯誤導致回滾, 不會執行 aftercommit 內的方法

Spring容器啟動之後進行初始化操作

在開發專案中,經常會遇到這樣的需求 專案啟動之後需要進行一些初始化操作。在spring專案開發中可以使用下面兩種方法完成。使用 postconstrut註解 spring中實現 如下。注意可以使用 component註解,但必須在xml中掃瞄包,註冊為元件 也可以在xml中直接配置bean,否則下面...

Spring容器啟動之後進行初始化操作

在開發專案中,經常會遇到這樣的需求 專案啟動之後需要進行一些初始化操作。在spring專案開發中可以使用下面兩種方法完成。spring中實現 如下。注意可以使用 component註解,但必須在xml中掃瞄包,註冊為元件 也可以在xml中直接配置bean,否則下面方法不會被執行。使用 postcon...

Spring容器啟動之後進行初始化操作

在開發專案中,經常會遇到這樣的需求 專案啟動之後需要進行一些初始化操作。在spring專案開發中可以使用下面兩種方法完成。spring中實現 如下。注意可以使用 component註解,但必須在xml中掃瞄包,註冊為元件 也可以在xml中直接配置bean,否則下面方法不會被執行。使用 postcon...