第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

advisor的order參數(shù)

想問下advisors例子中,order在切面類中并無實際運用,他的實際作用是什么呢

正在回答

1 回答

Spring中的事務(wù)是通過aop來實現(xiàn)的,當我們自己寫aop攔截的時候,會遇到跟spring的事務(wù)aop執(zhí)行的先后順序問題,比如說動態(tài)切換數(shù)據(jù)源的問題,如果事務(wù)在前,數(shù)據(jù)源切換在后,會導(dǎo)致數(shù)據(jù)源切換失效,所以就用到了Order(排序)這個關(guān)鍵字.

? ? ? ?我們可以通過在@AspectJ的方法中實現(xiàn)org.springframework.core.Ordered 這個接口來定義order的順序,order 的值越小,說明越先被執(zhí)行。

比如代碼如下:

/**
?*?aop面向切面編程
?*
?*/@Component@Aspectpublic?class?AspectJ4DataBase?implements?Ordered{
//攔截所有的service操作
@Pointcut("execution(?*?com.hc.shop.*.service.*.*(..))")
public?void?readMethod()?{
}//?匹配所有的讀取操作

@Before("readMethod()")
public?void?onlyReadPre(){
DataSourceContextHolder.setDataSourceType(DataSourceType.MYSQL);
System.out.println("數(shù)據(jù)庫切換MYSQL");
} @After("readMethod()")
public?void?onlyReadPast(){
DataSourceContextHolder.setDataSourceType(DataSourceType.ORACLE);
System.out.println("數(shù)據(jù)庫切換回ORACLE");
} @Override
public?int?getOrder()?{ //?TODO?Auto-generated?method?stub
return?1;
}
}


????在事務(wù)配置的地方也配置order 字段,代碼如下:

????

<!--?注解方式配置事物?--><tx:annotation-driven?transaction-manager="transactionManager"?order="2"/>


這樣就實現(xiàn)了我們自己寫的aop在事務(wù)介入之前就執(zhí)行了!


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

advisor的order參數(shù)

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號