一、Spring的設計目標
1.1 設計理念
在javaEE的應用的開發中,支援POJO和只用JavaBean的開發方式,使應用面向介面開發,充分支援OO(物件導向)的設計方法。鬆耦合的設計理念。定位於提供整體平臺的解決方案.
物件導向、鬆耦合的設計理念:繫結的是IOC容器和AOP模組,面向介面開發並不依賴於具體的產品實現。
輕量級的特性,推崇POJO開發。
1.2 IOC容器
IOC容器來管理POJO物件,以及他們之間的耦合關係,使企業的資訊(資料)資源可以用簡單的Java語言來抽象和描述。
1.3 AOP模組
以動態和非入侵的方式來增強服務的功能。實現AOP採用多種方式,整合了 AspectJ 框架,也有ProxyFactory這種代理工廠的模式。在代理工廠的實現中,既有直接使用JVM動態代理AopProxy的實現,也有使用第三方代理類庫CGLIB(位元組碼技術)的實現。
二、Spring的整體架構
以AOP和IOC為基礎的整體框架。
2.1 Spring IOC
包括最基本的IOC容器BeanFactory的介面與實現。包含Resource訪問資源的抽象與定位等。以及更高形態的ApplicationContext應用上下文,如FileSystemXmlApplicationContext、ClassPathXmlApplicationContext。
2.2 Spring AOP
Spring整合了AspectJ作為AOP的特定實現,同時還在JVM動態代理/CGLIB的基礎上,實現了一個AOP框架,作為整合Spring整合其他模組的工具,比如TransactionProxyFactoryBean宣告式事務處理。在這個模組中,SpringAOP實現了 建立AOP代理物件,實現AOP攔截器,直至實現各種Advice通知的過程。
2.3 Spring MVC
以DispatcherServlet為核心,實現了MVC模式,包括與WEB容器環境的整合,WEB請求的攔截、分發、處理和ModleAndView資料的返回,以及整合各種UI檢視展現和資料表現,如PDF、Excel等。
2.4 Spring JDBC/Spring ORM
在JDBC規範的基礎上,Spring對JDBC做了一層封裝,使通過JDBC對資料庫的操作更加簡潔。同時提供了許多對ORM工具的封裝,如Hibernate、iBatis等。
2.5 Spring 事務處理
是一個通過SpringAOP實現自身增強的典型模組。只需要在IOC容器中對事務屬性進行配置即可完成,事務處理的基本過程與具體的事務處理器無關。
2.6 Spring 遠端呼叫
Spring 將應用解耦,一方面降低應用複雜度,另一方面將解偶後的應用模組分散式部署,以提高效能。遠端呼叫是通過Spring封裝對spring應用和spring應用的端到端呼叫。
三、Spring的應用場景
SpringJDBC相對於Hibernate,功能上單薄,Hibernate還提供了各種資料的查詢、方便的物件和關係資料的對映等。
Spring在SSH框架中使得應用直接部署到Tomcat這個Web伺服器上。
四、Spring的特點
- 非入侵性框架。
- 一致的程式設計模型,POJO開發。
- 物件導向和麵向介面程式設計,提高了程式碼的重用性和可測試性。
- 改變了體系結構的選擇,Spring幫我們選擇不同的技術實現。