概念介紹
面向切面編程
把軟件系統(tǒng)分為兩個(gè)方面
- 核心關(guān)注點(diǎn)
- 橫切關(guān)注點(diǎn)
由于業(yè)務(wù)處理主要關(guān)注的是核心關(guān)注點(diǎn)而昨,但是橫切關(guān)注點(diǎn)經(jīng)常發(fā)生在核心關(guān)注點(diǎn)多處,且使用上基本相似坯辩。比如權(quán)限認(rèn)證究恤,日志,事務(wù)處理祭务,lazy-loading等内狗。
關(guān)鍵技術(shù)
- 動(dòng)態(tài)代理
截取消息,對(duì)該消息進(jìn)行裝飾义锥,以取代原有對(duì)象行為的執(zhí)行 - 靜態(tài)織入
引入特定的語法創(chuàng)建“方面”柳沙,從而使編譯期能夠織入有關(guān)“方面”的代碼
原理
AOP框架負(fù)責(zé)動(dòng)態(tài)的生成AOP代理類,這個(gè)代理類的方法則由Advice和回調(diào)目標(biāo)對(duì)象的方法所組成拌倍。
即:
代理對(duì)象的方法 = 增強(qiáng)處理 + 被代理對(duì)象的方法
在代理對(duì)象invoke方法調(diào)用目標(biāo)對(duì)象方法時(shí)赂鲤,調(diào)用配置的通知。