詳見:
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
public
class
aspectj4database
implements
ordered
// 匹配所有的讀取操作
@before
(
"readmethod()"
)
public
void
onlyreadpre()
@after
(
"readmethod()"
)
public
void
onlyreadpast()
@override
public
int
getorder()
}
在事務配置的地方也配置order 字段,**如下:
1
<
tx:annotation-driven
transaction-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...