spring源碼分析
spring有三個核心包:bean,core,Context,這三個包是上層特性功能的基礎。
1、spring的設計理念
上面介紹了spring的三個核心組件,如果要在它們中選出核心,那麽非bean組件了。spring就是面向bean編程。
Bean在spring中的作用就像Object對OOP的意義一樣,
spring解決了一個非常關鍵的問題,它可以讓你把對象之間的依賴關系轉而用配置文件管理,也就是他的依賴註入機制,
而這個註入關系在一個叫Ioc的容器中管理,那麽在Ioc容器中又是什麽?
就是被Bean包裹的對象。spring正是通過把對象包裝在Bean中從而達到管理這些對象及做一系列額外操作的目的的。
它這種設計策略完全類似於java實現OOP的設計理念,當然java本身的設計要比Spring復雜太多太多,但是他們都是構建一個數據結構,
然後根據這個數據結構設計他的生存環境,並讓它在這個環境中按照一定的規律不停的運動,在它們不停運動中設計一個系列與環境
或者與其他個體完成信息交換。這樣想來我們用到其他光劍大概都是類似的設計理念。
2、核心組件如何協同工作
前面說bean是spring中的關鍵因素,那麽Context和Core又有何作用呢?前面把Bean比作一場演出中的演員,Context就是這場演出的舞臺背景,而core應該就是演出的道具了。
我們知道bean包裝的是Object。而Object必然有數據,如何給這些數據提供生存環境就是Context要解決的問題,對Context來說他就是要發現每個bean之間的關系,為他們建立這種關系
並且維護好這種關系。所以Context就是一個bean關系的集合,這個關系集合又叫Ioc容器,一旦建立起這個Ioc容器,Spring就可以為你工作了。Core組件有什麽用武之地呢?
其實Core就是發現、建立和維護每個Bean之間的關系所炫需要的一系列工具,從這個角度來看,把Core組件叫做Util更能讓你理解。
3、Bean組件
前面已經說明了Bean組件對spring的重要性,下面看看Bean組件是怎麽設計的。bean組件在beans包下。
在這個包下所有類主要解決了3件事:Bean的定義、Bean的創建、對bean的解析。
對Spring的使用者來說唯一需要關心的就是Bean的創建,其他兩個由Spring在內部幫你完成,對你來說是透明的。
spring源碼分析