spring-ioc

IOC的意義

依賴注入已經是一個老生長談的問題,這個方面我的理解不是很多,希望大家共同探討。

我的理解

1. 對象之間是必須有關聯的,這樣才能構成整個系統
2.對象之間的耦合可以之間通過類耦合,導致了程序很難維護和修改
3.發現了面向接口開發,可以很輕鬆的用一個類代替另外一個類,只和接口耦合(其實已經很完美了)
4.接口耦合我們也必須在類中手動創建實現類,還是客戶端類必須知道具體的實現。
5.使用工廠模式,可以避免客戶端類擁有過多的具體實現知識。這個是夠代碼必須和工廠類進行耦合,必須自己創造大量的工廠類
6.spring 提供一個一系列的工廠集合,代碼只用和spring進行耦合
7.spring使用一些技術,自動裝填,註解等方式實現代碼和spring的低耦合

spring源碼分析的方法

springIOC是一個很複雜的實現,之前一直沒有找到方法學習全貌(一層一層查看),效果很不是理想,直到最近找到了一個比較好的方式:給大家分享一下,正在學習,後續會補充

工具: IDEA
UML: 隨便找了一個(http://www.cnblogs.com/yjmyzz/p/4588386.html),大家看看
思路:
1.先找到點關於spring框架介紹的內容,對主要的接口和框架思路有大致的瞭解
2.對主要的接口進行閱讀(都是英文),作者的註釋其實寫的還是很清楚的。
3.使用IDEA創建一個.uml圖,添加自己看到的各種接口,繪製類圖
4.看不懂得,直接F4進入接口再看,看不懂的可以用他的實現類輔助學習。()

IOC關鍵接口

BeanFactory(bean工廠)

定義了IOC的基本父接口,提供了獲得bean的getBean()方法

FactoryBean(工廠bean)

定義了創建bean的getObject()方法

HierarchicalBeanFactory(可層級的BeanFactory)

BeanFactory的子接口,擴展了BeanFactory,定義BeanFactory可以擁有父工廠

AutowireCapableBeanFactory(可配置的BeanFactory)

擴展了BeanFactory,可以對bean進行自動裝填和屬性賦值,
提供了和其他框架進行集成的功能,可以對已經存在但不受spring管理的bean配置屬性

ListableBeanFactory(可列表的BeanFactory)

擴展了BeanFactory,可以獲得集合屬性,提供了containsBeanDefinition() getBeanNamesForType()

BeanDefinition(Bean定義)

spring抽象的Bean定義,詳細描述了bean的各種屬性
單例or 原型 className 構造器……
spring通過BeanDefinition創建實例的

下面的文章,我會從各個接口說明我理解的spring,歡迎大家吐槽

參考資料

http://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章