Spring 簡介


Spring是一個分層的 full-stack(一站式)輕量級框架,以Ioc(Inversion of Control,控制反轉)和AOP(Aspect Oriented Programming,面向切片編程)為內核,使用簡單的JavaBean來完成以前只能由EJB(Enterprise Java Beans)完成的工作,取代了臃腫、低效的EJB。

 

Spring致力於JavaEE應用各層的解決方案,是企業應用一站式開發很好的選擇,在表現層它提供了Spring MVC以及整合Struts的功能,在業務邏輯層可以管理事務、記錄日志等,在持久層可以整合Hibernate、Mybatis等框架。雖然Spring貫穿表現層、業務邏輯層、持久層,但Spring並不是要取代那些已有的優秀框架,而是可以高度開放的與其它優秀框架無縫整合。

 

 


 

 

 

Spring的優點

1、非侵入式設計

Spring是一種非侵入式(no-invasive)框架,它可以使應用程序代碼對框架的依賴最小化。

 

2、方便解耦、簡化開發

Spring是一個大工廠,可以將所有  對象的創建、依賴關系的維護 交給Spring容器管理,大大降低了組建之間的耦合。

 

3、支持AOP

允許將一些通用任務,比如安全、事務、日志等,進行集中式管理,從而提高程序的復用性。

 

4、支持聲明式事務處理

通過配置就可以完成對事務的管理,無需手動編程。

 

5、方便整合其它優秀框架

Spring可以與大多數框架無縫整合。

 

6、測試方便

Spring支持Junit4,可通過注解測試程序,很方便。

 

7、降低了使用JavaEE API的難度

Spring對JavaEE開發中難用的一些API進行了封裝,降低了這些API的使用難度。

 

 


 

 

Spring的體系結構

 

1、Test模塊

提供對應用的單元測試、集成測試的支持

 

2、Core  Container(核心容器)

Spring核心容器是其它模塊的基礎,主要由5個模塊組成:

  • Beans模塊:提供BeanFactory,是工廠模式的經典實現,Spring將管理的對象稱為Bean。
  • Core  核心模塊:是Spring框架的基本組成部分,提供Ioc、DI功能。
  • Context  上下文模塊:建立在Beans、Core模塊的基礎上,可以通過它來訪問任何對象的定義、配置。Context模塊最重要的是ApplicationContext接口。
  • Context-support 模塊:提供Spring對嵌入第三方庫的支持,比如要嵌入緩存(Jcache、EhCache)、郵件服務(JavaMail)、任務調度(CommonJ、Quartz)這些第三方功能,就要用到此模塊。
  • SpEL模塊:提供對Spring Expression Language的支持。

 

3、

  • AOP模塊:提供對面向切片編程的支持,允許定義方法攔截器和切入點,將代碼按照功能分離,以降低耦合。
  • Aspects模塊:提供對整合Aspects框架的支持,Aspects是一個優秀的AOP(面向切片編程)框架。
  • Instrumentation模塊:提供對類工具、類加載器的支持/實現。
  • Messaging模塊:提供對消息傳遞體系的支持。

 

4、Data Access/Integration(數據訪問/集成)

  • JDBC模塊:是JDBC的抽象,大幅減少了對數據庫的編碼。
  • ORM模塊:封裝了大量的對象關系映射的API,提供對JPA、JDO、Hibernate的整合支持。
  • OXM模塊:提供了一個支持對象/XML映射的抽象層實現,比如XMLBeans、XStream。
  • JMS模塊:提供對消息傳遞服務的支持。
  • Transactions 事務模塊:提供對POJO編程、聲明式事務管理的支持。

 

5、Web

  • WebSocket模塊:提供WebScoket、SockJS的實現,以及對STOMP的支持
  • Servlet模塊:也稱為Spring-webmvc模塊,包含了Spring的MVC。
  • Web模塊:提供基本的Web開發集成特性,比如多文件上傳功能、使用Servlet監聽器來初始化Ioc容器以及Web應用上下文。
  • Portlet模塊:提供了對在Portlet環境中使用MVC的支持。

 

 


 

 

Spring中的Bean

Spring容器負責創建、管理Bean的實例,所有的類都可以作為Bean。

傳統的JavaBean一般是作為DTO(數據傳輸對象),用來封裝值對象,在各層之間傳遞數據。Spring Bean可以是任何組件,用途廣泛。

傳統的JavaBean要求為每一個成員變量提添加setter、getter方法。Spring Bean則無此要求,但盡量為Bean寫一個無參的構造函數(不強制)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM