當前位置:編程學習大全網 - 編程語言 - spring框架的模塊

spring框架的模塊

Spring框架由七個定義明確的模塊組成(圖1.1)。

(Spring框架概覽圖1.1)

如果作為壹個整體,這些模塊為妳提供了開發企業應用所需的壹切。但妳不必將應用完全基於Spring框架。妳可以自由地挑選適合妳的應用的模塊而忽略其余的模塊。

就像妳所看到的,所有的Spring模塊都是在核心容器之上構建的。容器定義了Bean是如何創建、配置和管理的——更多的Spring細節。當妳配置妳的應用時,妳會潛在地使用這些類。但是作為壹名開發者,妳最可能對影響容器所提供的服務的其它模塊感興趣。這些模塊將會為妳提供用於構建應用服務的框架,例如AOP和持久性。

核心容器

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

應用上下文(Context)模塊

核心模塊的BeanFactory使Spring成為壹個容器,而上下文模塊使它成為壹個框架。這個模塊擴展了BeanFactory的概念,增加了對國際化(I18N)消息、事件傳播以及驗證的支持。

另外,這個模塊提供了許多企業服務,例如電子郵件、JNDI訪問、EJB集成、遠程以及時序調度(scheduling)服務。也包括了對模版框架例如Velocity和FreeMarker集成的支持。

Spring的AOP模塊

Spring在它的AOP模塊中提供了對面向切面編程的豐富支持。這個模塊是在Spring應用中實現切面編程的基礎。為了確保Spring與其它AOP框架的互用性,Spring的AOP支持基於AOP聯盟定義的API。AOP聯盟是壹個開源項目,它的目標是通過定義壹組***同的接口和組件來促進AOP的使用以及不同的AOP實現之間的互用性。通過訪問他們的站點,妳可以找到關於AOP聯盟的更多內容。

Spring的AOP模塊也將元數據編程引入了Spring。使用Spring的元數據支持,妳可以為妳的源代碼增加註釋,指示Spring在何處以及如何應用切面函數。

JDBC抽象和DAO模塊

使用JDBC經常導致大量的重復代碼,取得連接、創建語句、處理結果集,然後關閉連接。Spring的JDBC和DAO模塊抽取了這些重復代碼,因此妳可以保持妳的數據庫訪問代碼幹凈簡潔,並且可以防止因關閉數據庫資源失敗而引起的問題。

這個模塊還在幾種數據庫服務器給出的錯誤消息之上建立了壹個有意義的異常層。使妳不用再試圖破譯神秘的私有的SQL錯誤消息!

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

對象/關系映射集成模塊

對那些更喜歡使用對象/關系映射工具而不是直接使用JDBC的人,Spring提供了ORM模塊。Spring並不試圖實現它自己的ORM解決方案,而是為幾種流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映射。Spring的事務管理支持這些ORM框架中的每壹個也包括JDBC。

Spring的Web模塊

Web上下文模塊建立於應用上下文模塊之上,提供了壹個適合於Web應用的上下文。另外,這個模塊還提供了壹些面向服務支持。例如:實現文件上傳的multipart請求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWork。

Spring的MVC框架

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

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

Spring框架Web頁面亂碼問題

在做java Web 項目時,亂碼問題時常都會出現,解決方法也不盡相同,有簡單也有復雜的;如果加入了Spring框架之後就不壹樣了,可以采用Spring框架自帶的過濾器CharacterEncodingFilter,這樣可以大大減輕了我們的工作量,即簡單方便又容易理解,配置方式如下:在web.xml文件中filter的位置加上如下內容:

<filter>

<filter-name>encodingFilter</ filter-name >

<filter-class>

org.springframework.web.filter.CharacterEncodingFilter

</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>*</url-pattern>

</filter-mapping>

  • 上一篇:python與java編程語言的區別?
  • 下一篇:Altium推出Altium Designer 14了嗎?
  • copyright 2024編程學習大全網