AOP快速入门
一、概念
AOP面向切面編程,是函數(shù)式編程的延申,是對(duì)OOP的補(bǔ)充;
代理模式:攔截增強(qiáng)作用,增強(qiáng)功能;
1、java繼承,縱向共性抽取,
?
?2、橫向切面AOP織入增強(qiáng)代碼方式
?
?二、原理是通過代理機(jī)制,代理模式的意思就是用代理對(duì)象增強(qiáng)原來的真實(shí)對(duì)象的功能,如Filter攔截器;
?
?其中,Proxy是java自帶的一個(gè)類;
三、AOP術(shù)語
?四、手動(dòng)實(shí)現(xiàn)AOP編程,用JDK的Proxy代理,AOP只是一種思想
代理:必須要有接口存在,因?yàn)閯?chuàng)建代理對(duì)象時(shí)參數(shù)列表第二個(gè)參數(shù)就是接口的實(shí)現(xiàn)類對(duì)象(真實(shí)對(duì)象),接口是不能創(chuàng)建對(duì)象的;
1、靜態(tài)工廠類:
?
?其中,先創(chuàng)建了接口的實(shí)現(xiàn)類對(duì)象,為真實(shí)對(duì)象,再創(chuàng)建代理對(duì)象來攔截和增強(qiáng)真實(shí)對(duì)象的方法功能;
?
?其中,這邊的創(chuàng)建代理對(duì)象的第三個(gè)參數(shù)列表是一個(gè)匿名內(nèi)部類,匿名內(nèi)部類訪問外面的靜態(tài)方法中的局部變量時(shí),要讓這變量用final修飾;
代碼測(cè)試:
?其中,使用靜態(tài)工廠創(chuàng)建出代理對(duì)象增強(qiáng)真實(shí)對(duì)象的方法功能;
?
五、使用cglib代理手動(dòng)實(shí)現(xiàn)AOP
1、代碼實(shí)現(xiàn)
?
?
?
?
?
?
?
?代碼測(cè)試:
?2、細(xì)節(jié)優(yōu)化
?
?proxy代理對(duì)象是真實(shí)對(duì)象的子類;
解耦是和外面的studentService對(duì)象沒有關(guān)系了;
動(dòng)態(tài)代理意思是這個(gè)代理對(duì)象是程序運(yùn)行時(shí)生成的,代碼里看不到這個(gè)類和對(duì)象存在;
轉(zhuǎn)載于:https://www.cnblogs.com/wmqiang/p/11610227.html
總結(jié)
- 上一篇: Filter案例之敏感词过滤和代理模式
- 下一篇: AspectJ——AOP框架快速入门