Spring 提供了自動(dòng)代理機(jī)制,可以讓容器自動(dòng)生成代理,從而把開(kāi)發(fā)人員從繁瑣的配置中解脫出來(lái) 。 具體是使用 BeanPostProcessor 來(lái)實(shí)現(xiàn)這項(xiàng)功能。
1 BeanPostProcessor
BeanPostProcessor 代理創(chuàng)建器的實(shí)現(xiàn)類可以分為 3 類:
類型 | 實(shí)現(xiàn)類 |
---|---|
基于 Bean 配置名規(guī)則 | BeanNameAutoProxyCreator |
基于 Advisor 匹配規(guī)則 | DefaultAdvisorAutoProxyCreator |
基于 Bean 中的 AspectJ 注解標(biāo)簽的匹配規(guī)則 | AnnotationAwareAspectJAutoProxyCreator |
所有的自動(dòng)代理器類都實(shí)現(xiàn)了 BeanPostPorcessor ,在容器實(shí)例化 Bean 時(shí), BeanPostProcessor 將對(duì)它進(jìn)行加工處理,所以自動(dòng)代理創(chuàng)建器能夠?qū)M足匹配規(guī)則的 bean 自動(dòng)創(chuàng)建代理對(duì)象。
2 BeanNameAutoProxyCreator
假設(shè)有以下兩個(gè)實(shí)體類(用戶與充電寶)。
用戶類:
public class User { public void rent(String userId) { System.out.println("User:租賃【充電寶】"); } public void back(String userId){ System.out.println("User:歸還【充電寶】"); } }