天天看點

spring源碼-開篇

  一、寫部落格也有一段時間了,感覺東西越來越多了,但是自己掌握的東西越來越少了,很多時候自己也在想。學那麼多東西,到頭來知道的東西越來越少了。是不是很奇怪,其實一點都不奇怪。

  我最近發現了一個很大的問題,就是自己做開發這麼久了。很多原理以及實作都不是很了解,包括自己在假裝面試了解自己不足的時候,也突顯除了自己的問題所在。面試官會問你,你真的懂這個技術嗎。那麼它的實作原理是怎麼樣的,簡單的描述一下。當時我就懵逼了,這個問題說嚴重也嚴重,說不嚴重也不嚴重。

  因為,作為2年開發的我。開發和自己積累下來的應用知識以及了解的多方面實際應用,開發還是遊刃有餘的。但是涉及到深層次的應用的時候就存在很大的弊端了。這也是我下定決心開心學習源碼的第一步,很多東西其實别人要你的不是多而是精。

  二、spring架構,基本上做Java開發的程式猿都應該熟悉或了解吧。他作為我們開發的基本架構,也是近幾年比較火的一中開發架構。其實學習spring的目的是讓自己更加了解其中的核心技術。是以在此,我後續的部落格基本上都是我學習spring源碼的一些了解。當然有錯誤或者思路不正确的地方,還請指出來!

  三、

spring源碼-開篇

  Spring 是一個開源架構,是為了解決企業應用程式開發複雜性而建立的。架構的主要優勢之一就是其分層架構,分層架構允許您選擇使用哪一個元件,同時為 J2EE 應用程式開發提供內建的架構。

  四、

  1)核心容器

  這是Spring架構最基礎的部分,它提供了依賴注入(DependencyInjection)特征來實作容器對Bean的管理。這裡最基本的概念是BeanFactory,它是任何Spring應用的核心。BeanFactory是工廠模式的一個實作,它使用IoC将應用配置和依賴說明從實際的應用代碼中分離出來。

  2)應用上下文(Context)子產品

  核心子產品的BeanFactory使Spring成為一個容器,而上下文子產品使它成為一個架構。這個子產品擴充了BeanFactory的概念,增加了對國際化(I18N)消息、事件傳播以及驗證的支援。

另外,這個子產品提供了許多企業服務,例如電子郵件、JNDI通路、EJB內建、遠端以及時序排程(scheduling)服務。也包括了對模版架構例如Velocity和FreeMarker內建的支援。

  3)Spring的AOP子產品

  Spring在它的AOP子產品中提供了對面向切面程式設計的豐富支援。這個子產品是在Spring應用中實作切面程式設計的基礎。為了確定Spring與其它AOP架構的互用性,Spring的AOP支援基于AOP聯盟定義的API。AOP聯盟是一個開源項目,它的目标是通過定義一組共同的接口群組件來促進AOP的使用以及不同的AOP實作之間的互用性。通過通路他們的站點,你可以找到關于AOP聯盟的更多内容。

Spring的AOP子產品也将中繼資料程式設計引入了Spring。使用Spring的中繼資料支援,你可以為你的源代碼增加注釋,訓示Spring在何處以及如何應用切面函數。

  4)JDBC抽象和DAO子產品

  使用JDBC經常導緻大量的重複代碼,取得連接配接、建立語句、處理結果集,然後關閉連接配接。Spring的JDBC和DAO子產品抽取了這些重複代碼,是以你可以保持你的資料庫通路代碼幹淨簡潔,并且可以防止因關閉資料庫資源失敗而引起的問題。

  這個子產品還在幾種資料庫伺服器給出的錯誤消息之上建立了一個有意義的異常層。使你不用再試圖破譯神秘的私有的SQL錯誤消息!

  另外,這個子產品還使用了Spring的AOP子產品為Spring應用中的對象提供了事務管理服務。

  5)對象/關系映射內建子產品

  對那些更喜歡使用對象/關系映射工具而不是直接使用JDBC的人,Spring提供了ORM子產品。Spring并不試圖實作它自己的ORM解決方案,而是為幾種流行的ORM架構提供了內建方案,包括Hibernate、JDO和iBATIS SQL映射。Spring的事務管理支援這些ORM架構中的每一個也包括JDBC。

  6)Spring的Web子產品

Web上下文子產品建立于應用上下文子產品之上,提供了一個适合于Web應用的上下文。另外,這個子產品還提供了一些面向服務支援。例如:實作檔案上傳的multipart請求,它也提供了Spring和其它Web架構的內建,比如Struts、WebWork。

  7)Spring的MVC架構

  Spring為建構Web應用提供了一個功能全面的MVC架構。雖然Spring可以很容易地與其它MVC架構內建,例如Struts,但Spring的MVC架構使用IoC對控制邏輯和業務對象提供了完全的分離。

它也允許你聲明性地将請求參數綁定到你的業務對象中,此外,Spring的MVC架構還可以利用Spring的任何其它服務,例如國際化資訊與驗證。

  五、上面基本上就是spring的功能,以及個人感想,後續會更新這塊的目錄!

  六、目錄

  (1)

spring源碼-bean之初始化-1

  (2)spring源碼-bean之加載-2(待續)