Spring技術内幕——深入解析Spring架構與設計原理(一)引子緣起
已經很久沒有寫文章了,現在總算是有點時間寫些東西,也算是對自己的一個記錄吧。剛剛完成了一個軟體産品,從概念到營運都弄了一下,正在推廣當中,雖然還沒有能夠達到盈虧平衡,但是這個過程,對自己也算是一種曆練。先不管結果如何,好呆走過這麼一遭了。
我打算用這個文章,把自己在這個過程中的一些心得,特别是對Spring新的了解,記錄下來。使用這個文章的标題,持續下來。
簡單來說,自己的軟體産品是一個基于網際網路的SaaS協同軟體平台,操作簡單,支援流程定義,管理和多種用戶端 -像短信,MSN,智能手機什麼的(我這裡就不多做什麼廣告了),也有一個企業版的版本,使用的技術架構是Hibernate + Spring + Wicket,下面是Linux和MySQL,還有雲計算的平台的使用,以支援其擴充性,雖然現在還沒有可擴充性的需求,但似乎不難從SaaS上,就會想 到雲計算, 其實,它們真的是天生的一對!
關于雲計算,自己對這個技術很感興趣,覺得和開源軟體的結合,是很有意思的,因為它們都有基于服務的基因,在雲計算平台的使用上,也有一些初步的 實踐。雲計算是一個很有意思的話題,但在這裡主要是想談Spring,是以對雲計算,這裡就先不多說了,但非常歡迎有興趣的朋友和一起另外找地方讨論!
回到正題,在我自己的産品中,其中除了Wicket和雲計算外,其他都是大家非常熟知的了,像Hibernate, Spring, MySQL什麼的。在這個過程中,發現自己對一些技術點也有了新的認識,最有體會的是Spring。當然,在這個過程中,更大的收獲是對産品開發整個過程 的認識,在這點上,真是一言難盡........
回到自己還算了解的Spring, 這次我使用的是3.0的代碼,是以,有機會也把這些代碼讀了幾遍,比原來的了解要加深了許多,也發現了不少和2.0代碼不同的地方,以及自己一些對 Spring的新的了解,這些,就讓我就用這個文章系列,給自己總結一下,也算是對自己以前的那個代碼分析的文章做一個新的交代吧。
自己對Spring一點小小的見解
簡化Java企業應用的開發,是Spring架構的目标.就是我們熟知的當年的那個interface21,也亦非吳下阿蒙了,由它演進出來的 Spring,以及由它帶來的嶄新開發理念,也早已伴随着這個開源架構的廣泛應用,而飛入尋常百姓家。與此同時,伴随着Spring的成熟,開源社群的成 長,在Rod.Johnson的上司下,以Spring為核心的一系列開源軟體的産品組合,其脈絡也逐漸的清晰和豐富起來;現在,已經發展成為一個包括軟 件運作,建構,部署營運,進而涵蓋整個軟體服務生命周期的産品族群;同時也成為,在當今主流的軟體業态中,一個不可或缺的重要組成。
在最近完成的VMware公司對Spring的營運者SpringSource公司的收購中,也讓我們又看到了一個,在開源軟體中,蘊含着的巨大 商業價值,以及又一次基于開源模式的商業成功;也讓我們看到,Spring為自己設計的未來定位,它與雲計算的融合趨勢,以及,努力成為在雲計算業态 中,PaaS(Platform As a Service)服務有力競争者的戰略設想;由此,可以想象,在雲計算這個全新的計算時代中,如何秉承Spring的一貫風格,為雲計算應用的開發,提供 高可靠,高可用,高可擴充,高性能的應用平台,對Spring團隊來說,是一個面臨的全新挑戰;在這個領域中的雄心和今後的作為,那就讓我們一起拭目以待 吧。這裡也有點湊巧了,正好Spring和雲計算都是自己喜歡的東西,說不定以後,我還能夠在這兩者的結合上再寫些東西呢。
作為一個龐大的體系,Spring在Java企業應用中, 和我們熟悉的企業應用伺服器一樣,比如我們熟知的其他産品,像Weblogic,Websphere,JBoss,.NET這些等等,其定位和目的,都在 于希望能夠起到一個企業應用資源的內建管理,以及為應用開發提供平台支援的作用,這和我們熟知的,像UNIX和Windows這樣傳統意義上的作業系統, 在傳統的計算系統中,起到的作用非常的類似。隻不過,按照個人的了解,它們不同在于,我們熟知的傳統作業系統關心的是存儲,計算,通信,外圍裝置這些實體 資源的管理,并在管理這些資源的基礎上,為應用程式提供一個統一平台和服務接口;而像Spring這樣的應用平台,它們關心的是在Java企業應用中,對 包括那些像Web應用,資料持久化,事務處理,消息中間件,分布式計算等等這些,為企業應用服務的抽象資源的統一管理,并在此基礎上,為應用提供一個基于 POJO的開發環境。盡管各自面向的資源,管理的對象,支援的應用以及使用的場景不同,但這兩者在整個系統中的定位,卻依然有着可以類比和互相參考的地 方,從某種意義上看,它們都起到一個資源協調,平台支援,以及服務內建的作用。