1. 程式人生 > >動態代理,Spring兩大核心知識BeanFactory、AOP框架!

動態代理,Spring兩大核心知識BeanFactory、AOP框架!

實現功能的封裝與配置:

工廠類BeanFactory負責建立目標類或者代理類的例項物件,並通過配置檔案實現切換,getBean方法根據引數字串返回一個相對應的例項物件,如果引數字串在配置檔案對應的類名不是ProxyFactoryBean,則直接返回該類的例項物件,返回該物件的getProxy方法返回的物件。

BeanFactory的構造方法接受代表配置檔案的輸入流物件,配置檔案格式如下:

#xxx=java.util.ArayList;xxx=cn.itcast.ProxyFactoryBean;xxx.target=java.util.ArrayList;xxx.d

evice=cn.itcast.Mydvice;

ProxyBean充當封裝生存的動態代理的工廠,需要為工廠類提供的配置資訊是:目標和通知

Object obj = BeanFactory.getBean("xxx");這句話的意思是說:有一個工廠BeanFactory,是產生JavaBean的Factory,有一個getBean(String name)的方法,根據這個名字創建出JavaBean物件,這個名字是在配置檔案裡面配置的,假如,配置的是#xxx=java.util.ArayList;輸入#xxx就等於告訴Spring要給我建立一個java.util.ArrayList例項物件,如果getBean發現不是ProxyFactoryBean這樣的特殊的類,就建立這樣的例項物件,else,不返回它的例項物件,而是呼叫ProxyFactoryBean類裡面的方法,創建出代理。

動態生成類的內部程式碼分析:

動態生成的類實現了Collection介面(可以實現多個介面),生成的類有Collection介面中的所有方法和一個接受InvocationHandler引數的構造方法,構造方法接收一個InvocationHandler物件,為什麼要定義介面,在一個地方要引用,但是不知道名字的時候就要用到介面的哦!

可生成代理和插入通告的通用方法

Spring框架原理知識就是利用的代理,核心程式碼實現如下:

Spring核心程式碼

Spring核心程式碼