Spring AOP 通過order來指定順序

2021-09-07 07:37:16 字數 1615 閱讀 7424

詳見:

spring中的事務是通過aop來實現的,當我們自己寫aop攔截的時候,會遇到跟spring的事務aop執行的先後順序問題,比如說動態切換資料來源的問題,如果事務在前,資料來源切換在後,會導致資料來源切換失效,所以就用到了order(排序)這個關鍵字.

我們可以通過在@aspectj的方法中實現org.springframework.core.ordered 這個介面來定義order的順序,order 的值越小,說明越先被執行。比如**如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

@component

@aspect

publicclassaspectj4databaseimplementsordered// 匹配所有的讀取操作

@before("readmethod()")

publicvoidonlyreadpre()

@after("readmethod()")

publicvoidonlyreadpast()

@override

publicintgetorder()

}

在事務配置的地方也配置order 字段,**如下:    

1

<tx:annotation-driventransaction-manager="transactionmanager"order="2"/>

這樣就實現了我們自己寫的aop在事務介入之前就執行了!

ThinkPHP CURD方法盤點 order方法

order方法屬於模型的連貫操作方法之一,用於對操作的結果排序。model where status 1 order id desc limit 5 select 注意 連貫操作方法沒有順序,可以在select方法呼叫之前隨便改變呼叫順序。支援對多個欄位的排序,例如 model where stat...

ThinkPHP CURD方法盤點 order方法

order方法屬於模型的連貫操作方法之一,用於對操作的結果排序。model where status 1 order id desc limit 5 select 注意 連貫操作方法沒有順序,可以在select方法呼叫之前隨便改變呼叫順序。支援對多個欄位的排序,例如 model where stat...

Spring AOP 通過配置檔案方式

1.寫乙個切面類 securitycontrol,其中有個方法 public class securitycontrol private void checksecurity joinpoint joinpoint object obj joinpoint.getargs for int i 0 i...