Spring Framework
一、學習Spring能帶給我什麼?
- 使Java方法在數據庫transaction(事務)中執行。
- 使Java成爲Http端點?
- 使Java成爲消息處理程序,而不用使用JMS()
- 使Java成爲management(管理)操作。
個人理解:
- Spring可以使Java在數據庫事務中執行,滿足事務的原子性、一致性、隔離性和持久性。
- 可以使Java通過訪問HTTP的方式,來對Java中的方法進行訪問。
- 通過使用Spring,可以使Java用來處理消息。
- 可以使Java對應用程序具有擴展性,具有管理功能。
二、Spirng Framework Modules(Spring框架的模塊)
由Core Container(核心容器)、Data Access/Integration(數據讀取和數據整合)、Web、AOP(面向切面編程)、Instrumentation(工具)、Messaging(消息傳遞)和Test共7部分組成,如下圖所示:
2.1 Core Container(核心容器)
Core Container是由spring-core(spring的核心)、spring-beans(spring裏面的類||元素)、spring-context(spring的上下文)、spring-context-support(spring上下文的支持)和spring-expression(spring的表達式)模塊組成。
spring-core和spring-beans模塊,包括IoC和依賴注入。BeanFactory是工廠模式的複雜implementation(容器),它消除了對程序化單例的需求,並允許您從實際程序邏輯中分離結構和依賴項規範(這段話個人理解:spring-beans將單一的程序結構,分成多個,您可以使用spring-beans將結構和依賴分離)。
☺Context(spring-context)構建在覈心(spring-core)和Beans(spring-beans)之上:Context是以framework-style(框架樣式)的方式來訪問object的方法,類似於JNDI註冊表(標準的Java命名和目錄接口),Context模塊是從Beans模塊繼承其特徵並添加對國際化的使用,例如資源包、event(事件)傳播,資源加載以及透明的上下文創建的支持,例如Servlet容器。還支持JavaEE的特徵,例如:EJB、JMX和基本遠程處理,ApplicationContext接口是Context模塊的焦點。
spring-context-support支持common-third-party libraries(公共的第三方庫)集成到Spring Context Application(spring應用上下文),用於緩存(EhChache)、郵件(JavaMail)、調度(CommonJ、Quartz)、模板引擎(FreeMarker)。
☺spring-expression模塊提供的是一個強大的表達語言(EL表達式),用於在運行時查詢和操作object(對象)圖,該語言支持設置和獲取property的值,property賦值、方法調用、訪問數組、集合和索引器的內容。
2.2 AOP和Instrumentation(工具)
spring-aop模塊面向切面編程,允許在example(例子)上定義方法攔截器和切入點,以乾淨解耦的方式實現應該分離的code(代碼)。
spring-aspects模塊提供與AspectJ的 integration(整合)。
spring-instrument模塊提供class檢測支持和類加載器instrumentations(實現)在某些application服務器中使用。
spring-instrument-tomcat模塊包含Spring對Tomcat的檢測代理。
2.3 Messaging消息
在Spring Framework中,包括一個spring-messaging模塊,其中包括來自spring整合項目的key抽象,例如Message(消息)、MessageChannel(消息會話)、MessageHeadler(消息處理程序)等,用來作爲messaging-based-applications(基於消息的應用程序)的基礎,該模塊還包括annotations(註解),用於將消息映射到方法上。
2.4 Data Access/ Data Integration(數據存取和數據整合)
Data Access/ Data Integration層是由JDBC、ORM、OXM、JMS和Transient模塊組成。
spirng-jdbc模塊提供了JDBC-abstraction(抽象)層,不需要進行繁瑣的JDBC編碼和解析database-vendor(特定錯誤代碼)
spring-tx模塊支持程序性和聲明性transaction(事務)management(管理)用於實現特殊接口的classes和所有的POJO。
spring-orm模塊包括JPA、JDO和Hibernate。
spring-oxm模塊包括JAXB、Castor、XMLBeans、JiBX和XStream
spring-jms模塊(Java消息傳遞服務)包含用於producing和consuming消息的特徵。
2.5 Web
Web層是由:spring-web、spring-webmvc、spring-websocket和spring-webmvc-portlet模塊組成。
spring-web模塊提供基本的web-oriented integration features(面向web的集成特徵),例如:multipart文件上傳下載功能和使用 Servlet listeners (服務監聽器)和 web-oriented application context (面向web應用程序上下文)初始化 IoC 容器。還包括HTTP Client和Spring遠程支持的web-related(網絡相關)部分。
spring-webmvc模塊包含了Spring的model、view、controller(MVC)。
spring-webmvc-portlet模塊提供了在Portlet環境中使用的MVC的implementation(實施),並且 mirrors Servlet-based spring-webmvc (基於springmvc的鏡像)模塊的功能。
2.6 Test
spring-test 模塊使用 JUnit 或 TestNG 支持單元測試和整合測試 Spring 組件。它提供了loading的
Spring ApplicationContext 和高速緩存這些上下文。它還提供mock objects,您可以使用它來隔離
測試您的 code