1.AOP的概念及優(yōu)點(diǎn)
Aspect Oriented Programming面向方面編程.
面對(duì)象編程的關(guān)注點(diǎn)是對(duì)象,面向方面編程以面向?qū)ο缶幊虨榛A(chǔ),關(guān)注點(diǎn)是切面,切面組件可以作用在若干目標(biāo)對(duì)象的方法上,封裝了具有通用性的一些處理.例如日志記錄,事務(wù)處理,異常處理等等.
面向方面編程優(yōu)點(diǎn):將共通處理封裝成了一個(gè)獨(dú)立組件,利用配置形式作用在了某一批目標(biāo)對(duì)象上,實(shí)現(xiàn)組件的重復(fù)利用,將切面和目標(biāo)對(duì)象解耦,實(shí)現(xiàn)了低耦合應(yīng)用.
*a.切面(Aspect)
封裝了共通處理的組件,可用于切入到目標(biāo)對(duì)象的處理方法中
*b.切入點(diǎn)(Pointcut)
用于指定目標(biāo)對(duì)象和方法的一個(gè)表達(dá)式.是連接點(diǎn)的集合.
連接點(diǎn)是切面組件與某一個(gè)目標(biāo)對(duì)象方法的作用點(diǎn),例如方法調(diào)用和異常發(fā)生
*c.通知(Advice)
用于指定切面功能切入目標(biāo)對(duì)象方法的位置.例如切入到目標(biāo)方法調(diào)用之前,目標(biāo)方法調(diào)用之后等.
通知類型:前置通知,后置通知,環(huán)繞通知,最終通知,異常通知
try{
//執(zhí)行前置通知
//執(zhí)行環(huán)繞通知--前置
執(zhí)行目標(biāo)對(duì)象方法
//執(zhí)行環(huán)繞通知--后置
//執(zhí)行后置通知
}catch(Exception ex){
//執(zhí)行異常通知
}finally{
//執(zhí)行最終通知
}
d.目標(biāo)對(duì)象(Target)
需要使用切面功能的,被切入的Bean對(duì)象.使用切入點(diǎn)表達(dá)式指定
e.動(dòng)態(tài)代理(AutoProxy)
在Spring采用了AOP之后,從容器取出的目標(biāo)對(duì)象是一個(gè)動(dòng)態(tài)代理類型,調(diào)用代理對(duì)象方法時(shí),代理對(duì)象會(huì)調(diào)用切面功能和目標(biāo)對(duì)象功能.
動(dòng)態(tài)代理類生成技術(shù):
有接口的目標(biāo)對(duì)象采用JDK Proxy技術(shù).
沒有接口的目標(biāo)對(duì)象采用CGLIB技術(shù).
2.切入點(diǎn)表達(dá)式的定義
1)方法限定execution
execution(修飾符? 返回類型 方法名(參數(shù)類型) throws 異常?)
a.匹配com.tarena.UserDAO的save()方法
execution(* com.tarena.UserDAO.save(..))
b.匹配com.tarena.UserDAO的所有方法
execution(* com.tarena.UserDAO.*(..))
c.匹配com.tarena.UserDAO的所有public void方法
execution(public void com.tarena.UserDAO.*(..))
d.匹配com.tarena包下所有類型的所有方法
execution(* com.tarena.*.*(..))
e.匹配com.tarena包下及其子包所有類型的所有方法
execution(* com.tarena..*.*(..))
f.匹配UserDAO中有一個(gè)參數(shù)并且是String類型的方法
execution(* com.tarena.UserDAO.*(java.lang.String))
2)類型限定within
within(類型)
a.匹配com.tarena.UserDAO的所有方法
within(com.tarena.UserDAO)
b.匹配com.tarena包下的所有類的所有方法
within(com.tarena.*)
c.匹配com.tarena包下及其子包的所有類的所有方法
within(com.tarena..*)
3)id名限定bean
bean(idOrName屬性值)
a.匹配容器中所有id或name屬性值以dao結(jié)尾的bean對(duì)象
bean(*dao)
![]() | ![]() .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書籍 |
![]() | ![]() .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書籍 |