天天看點

重新學習Spring之核心IOC容器的底層原理

一:IOC容器的定義

二:Ioc容器相關含義

    許多強大的功能都是由兩個或是更多的類通過彼此的合作來實作業務邏輯,這使得每個對象和其他的對象産生依賴或者關聯。(也就是對象持有其他對象的引用)。如果這個擷取過程要靠自身實作,那麼如你所見,這将導緻代碼高度耦合并且難以測試。

    工廠模式隻是一定程度上降低了這種代碼的耦合性,

    IoC模式可以徹底解決這種耦合,它把耦合從代碼中移出去,放到統一的XML 檔案中,通過一個容器在需要的時候把這個依賴關系形成,即把需要的接口實作注入到需要它的類中。這可能就是“依賴注入”說法的來源了。

    優點:因為把對象生成放在了XML裡定義,是以當我們需要換一個實作子類将會變成很簡單,隻要修改XML就可以了,這樣我們甚至可以實作對象的熱插撥(象USB)

   缺點:1.建立對象的過程變得複雜,對于不習慣這種方式的人,會覺得有些别扭和不直覺。

               2.對象生成因為是使用反射程式設計,在效率上有些損耗。但相對于IoC提高的維護性和靈活性來說,這點損耗是微不足道的,除非某對象的生成對效率要求特别高

三:IOC容器實作原理

----->ioc容器實作原理項目圖

  

重新學習Spring之核心IOC容器的底層原理

----->beans.xml對應的java類

【1】一個xml節點在可以映射成一個java類。

beans根節點對應的java類

重新學習Spring之核心IOC容器的底層原理
重新學習Spring之核心IOC容器的底層原理

View Code

bean節點對應的java類

重新學習Spring之核心IOC容器的底層原理
重新學習Spring之核心IOC容器的底層原理

property節點對應的java類

重新學習Spring之核心IOC容器的底層原理
重新學習Spring之核心IOC容器的底層原理

【2】beans.xml的配置内容

重新學習Spring之核心IOC容器的底層原理
重新學習Spring之核心IOC容器的底層原理

【3】BeansFactory工廠類解析beans.xml來實作對象的生成和關系的建立

BeansFactory工廠類

重新學習Spring之核心IOC容器的底層原理
重新學習Spring之核心IOC容器的底層原理

【4】MyAction類,此處省略了接口,和接口實作類的代碼(在接口中定義一個方法,實作類實作,并在方法中列印一句話)

MyAction類

重新學習Spring之核心IOC容器的底層原理
重新學習Spring之核心IOC容器的底層原理