IOC 的思想: Spring 容器來實現這些相互依賴的對象的建立、協調工做。對象只須要關心業務邏輯自己。
IOC 容器的執行步驟:app
applicationContext.xml
BeanDefinition
中,方便後續處理registerBeanDefinition
方法向IOC容器注入BeanDefinition
數據registerBeanDefinition(String beanName, BeanDefinition beanDefinition)
BeanDefinition
中的數據進行依賴注入 (經過反射機制實現的,在實例化一個類時,它經過反射調用類中setProperty
方法將事先保存在HashMap
中的類屬性注入到類中)
Spring經過反射
來進行注入。Spring將咱們配置的信息保存在一個 HashMap
中,HashMap 的 key 就是 Bean 的 id, value 就是 Bean 自己。spa
AOP 的配置
Spring AOP 的核心- ProxyFactoryBean
3d
JDK
面向接口的動態代理 JdkDynamicAopProxy
生成代理對象。JdkDynamicAopProxy
類實現了 AopProxy
,可以返回 Proxy
,而且,其自身也實現了 InvocationHandler
角色。也就是說,當咱們使用 proxy
時,咱們對 proxy
對象調用的方法,都最終被轉到這個類的 invoke()
方法中。代理
Cglib
子類繼承方式的動態代理 CglibAopProxy
生成代理對象
(有關動態代理的知識點將在以後細說)code