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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

advisor的order參數(shù)

想問(wèn)下advisors例子中,order在切面類(lèi)中并無(wú)實(shí)際運(yùn)用,他的實(shí)際作用是什么呢

正在回答

1 回答

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

? ? ? ?我們可以通過(guò)在@AspectJ的方法中實(shí)現(xiàn)org.springframework.core.Ordered 這個(gè)接口來(lái)定義order的順序,order 的值越小,說(shuō)明越先被執(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ù)庫(kù)切換MYSQL");
} @After("readMethod()")
public?void?onlyReadPast(){
DataSourceContextHolder.setDataSourceType(DataSourceType.ORACLE);
System.out.println("數(shù)據(jù)庫(kù)切換回ORACLE");
} @Override
public?int?getOrder()?{ //?TODO?Auto-generated?method?stub
return?1;
}
}


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

????

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


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


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

舉報(bào)

0/150
提交
取消

advisor的order參數(shù)

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

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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