上一篇《學(xué)習(xí)AOP之認(rèn)識(shí)一下SpringAOP》中大體的了解了代理、動(dòng)態(tài)代理及SpringAop的知識(shí)。因?yàn)閷懙钠L(zhǎng)了點(diǎn)所以還是再寫一篇吧。接下來(lái)開始深入一點(diǎn)Spring aop的一些實(shí)現(xiàn)機(jī)制。
上篇中最后有那段代碼使用了一個(gè)ProxyFactory類來(lái)完成代理的工作,從而實(shí)現(xiàn)了Aop的Around Advice,代碼如下:
package aop.demo; import org.springframework.aop.framework.ProxyFactory; public class ClientCode { public static void main(String[] args) {
ProxyFactory proxyFactory = new ProxyFactory(); // 創(chuàng)建代理工廠 proxyFactory.setTarget(new SayImpl()); // 射入目標(biāo)類對(duì)象 proxyFactory.addAdvice(new SayImplAroundAdvice());
ISay say = (ISay) proxyFactory.getProxy();
say.say();
}
}
那么接下來(lái)就聊聊ProxyFactory吧,看看它都干了些啥。
1、ProxyFactory的奧秘
繼續(xù)看上面的代碼只用了5行,這里面意思也非常明確,只有在第4行的時(shí)候有一個(gè)getProxy的方法并轉(zhuǎn)換為ISay接口。看來(lái)代理對(duì)象的來(lái)源可以從它入手了。