Spring學習筆記(一)
Spring學習筆記(一)
因為最近在看《Spring 技術內幕-深入解析Spring 架構與設計原理》,相當於做了個筆記,以及把自己理解的東西記錄下來。
Spring整體架構圖
1.Spring子項目
1.1 Spring Framework (Core)
Spring項目的核心,其中包含IOC容器,提供依賴反轉模式實現。
同時,還包括AOP功能,面向切面變成,是對oop(面向對象編程的補充),如spring的日誌、事物等都是通過AOP來實現。
還包含了其他的模塊,如MVC、JDBC、事物的處理等。
1.2 Spring Security:安全認證的工具,就和Shiro作用差不多。
1.3 Spring Web Flow:在Spring MVC基礎上的工作流引擎。
1.4 Spring AMQP: 為了spring更好的根據AMQP(高級消息隊列協議)的消息服務而開發。如SpringSource旗下的 Rabbit MQ就是一個開源的基於AMQP的消息服務器。
1.5 Spring Data:處理非關系型數據庫。裏面封裝了JDBC。還提供了對ORM工具的封裝,如可以集成Hibernatei、mybatis等。
還有一些其他的系項目就不一一介紹了。
2.Spring設計目標:
Spring體系的核心就是IOC容器和AOP模塊。它通過IOC來管理POJO對象,以及它們之間的耦合關系。另一方面,通過AOP,可以動態的非侵入式的方式來增強服務的功能。
如增加日誌、事物等。
什麽是非侵入事的方式呢?
侵入性強指的是耦合太強了.判斷的標準就是當引入了這個組件導致其它代碼或者設計要做相應的更改以適應新組件.這樣的情況我們就認為這個新組件具有侵入性。
AOP集成了AspectJ框架。同時也有ProxyFactory的代理工程模式。而代理模式的實現中;有JVM動態代理和CGLIB的實現。
面試題:AOP用到了什麽技術? JVM動態代理技術和CGLIB代理。
Spring 的設計理念就是,面向接口開發而不依賴與具體的產品實現。
解耦。
3.Spring整體架構
Spring IOC:包含了基本的IOC容易BeanFactory的接口與實現(Bean工廠模式)。除了最基本的BeanFactory容易形態外,還有ApplicationContext的高級形態。
這些ApplicationContext應用上下文,如FileSystemXmlApplicatonContext、ClassPathXmlApplicationContext。為了方便開發,像國際化消息源和應用支持事件這些特性。也
在這裏配合IOC容器來實現。
Spring AOP:在JVM動態代理和CGLIB的基礎上,實現的AOP框架。作為Spring集成其他模塊的工具。比如:TransactionPorxyFactoryBean聲明式事物處理,就是通過AOP集成到Spring中的。
Spring MVC:這個模塊以DispetcherServlet為核心,實現了MVC模式。包括怎樣與web容器環境的集成,web請求的攔截、分發,處理ModelAndView的返回。以及集成各種UI視圖展現和數據表現。如PDF、Excel等。通過這個模塊可以完成web的前端設計。
Spring JDBC/Spring ORM:對JDBC做了封裝,處理數據層操作。還提供了ORM工具的封裝,集成ORM工具,如Hibernate、mybatis等。
Spring事物處理:通過AOP實現的事務處理。完成了事物和具體業務的的解耦。如配置事物的攔截器,結合事物配置的屬性,對事物對象處理,如事物的創建、掛起、提交、回滾等基本過程。具體的事務處理器,如;DataSourceTransactionManager,HibernateTransactionManager,JtaTranscationManager等。封裝了不同的事物處理機制(JDBC、Hibernate/JTA等)。
Spring遠端調用:可以解耦以後將應用模塊分布式部署,提供系統整體的性能。這這種場景下,會用到。提供Spring應用到Spring應用之間的端到端的調用。
Spring應用:如對各種J2EE實現規範的接口,JMS、JNID、JMX、JavaMail等的支持。通過這個模塊,可以容納第三方的技術。
4.Spring應用場景
Spring提供的服務,可以貫穿應用的整個軟件中,從表現層的Spring MVC、業務層的事物處理、數據層的Spring JDBC。也可以單獨使用其中的某個模塊,只要引入相應的jar包就可以。
Spring學習筆記(一)