Spring的體系結構
重要的模組介紹:
1、Core Container(核心容器)
- Beans模組:提供BeanFactory,是工廠模式的經典實現,Spring將管理物件稱為Bean。
- Core核心模組:提供了Spring框架的基本組成部分,包括Ioc(控制反轉)和DI(依賴注入)功能。
- Context上下文模組:構建於Core封裝包基礎上的 Context封裝包,提供了一種框架式的物件訪問方法,有些象JNDI註冊器。Context封裝包的特性得自於Beans封裝包,並新增了對國際化(I18N)的支援(例如資源繫結),事件傳播,資源裝載的方式和Context的透明建立,比如說通過Servlet容器。
Spring的IoC容器
所謂的IoC是指在程式的設計中,例項不再由呼叫者來建立,而是由Spring容器來建立。Spring容器會負責控制程式之間的關係,而不是由程式程式碼直接控制,這樣控制權由應用程式碼轉移到了外部容器,控制權發生了反轉,也就是Spring的IoC思想。Spring為我們提供了兩種IoC容器,分別是BeanFactory和ApplicationContext。(1)BeanFactory
BeanFactory由org.springframework.beans.factory.BeanFactory介面定義,提供完整的IoC服務支援。它負責初始化各種Bean,並呼叫它們的宣告週期方法。他有多個實現子類比如XmlBeanFactory(2)ApplicationContext
ApplicationContext是BeanFactory的子介面,也被稱為應用上下文,由org.springframework.context.ApplicationContext定義,它不僅提供BeanFactory所有的功能,還以一種更見面向框架的方式增強了BeanFactory的功能。主要體現在Context包使用分層和有繼承關係的上下文類,具體情況如下:
1、MessageSource,提供對il8n訊息的訪問
2、資源訪問,例如URL和檔案
3、事件傳遞給實現了ApplicationListener介面的Bean
4、載入多個(有繼承關係)上下文類,使得每一個上下文類都專注於一個特定的層次使用BeanFactory載入:如果Bean的某一個屬性沒有注入,使用BeanFactory載入後,在第一次呼叫getBean()方法時會丟擲異常;
使用ApplicationContext載入:使用ApplicationContext載入會在初始化時自檢,這樣有利於檢查所依賴屬性是否注入。在開發中,一般使用ApplicationContext,只有在系統資源較少時,才會考慮使用BeanFactory。
2、Data Access/Integration模組
- DAO模組: DAO (Data Access Object)提供了JDBC的抽象層,它可消除冗長的JDBC編碼和解析資料庫廠商特有的錯誤程式碼。 並且,JDBC封裝包還提供了一種比程式設計性更好的宣告性事務管理方法,不僅僅是實現了特定介面,而且對所有的POJOs(plain old Java objects)都適用。
(1)JDBC模組:提供了一個JDBC的抽象層,大幅度地減少了在開發過程中對資料庫操作的程式碼。
(2)Transactions模組:支援程式設計和宣告式事務管理實現特殊介面類,並且對所有的POJO都是適用。
程式設計式:
宣告式:
- ORM模組: ORM 封裝包提供了常用的“物件/關係”對映APIs的整合層。 其中包括
JPA(Java Persistence API)
、JDO(Java Data Object )
、Hibernate
和iBatis
。利用ORM封裝包,可以混合使用所有Spring提供的特性進行“物件/關係”對映,如前邊提到的簡單宣告性事務管理。(在ORM模組,Spring沒有提供自己的實現)
3、Spring AOP模組:
Spring的 AOP 封裝包提供了符合AOP Alliance規範的面向方面的程式設計實現,讓你可以定義,例如方法攔截器(method-interceptors)和切點(pointcuts),從邏輯上講,從而減弱程式碼的功能耦合
,清晰的被分離開。而且,利用source-level的後設資料功能,還可以將各種行為資訊合併到你的程式碼中。
4、Web模組:
- Web模組:提供了基本的Web開發整合特性,例如:多檔案上傳功能、使用的Servlet監聽器的IoC容器初始化以及Web應用上下文。
- Servlet模組(Spring Web MVC):Spring中的MVC封裝包提供了Web應用的Model-View-Controller(MVC)實現。Spring的MVC框架並不是僅僅提供一種傳統的實現,它提供了一種清晰的分離模型,在領域模型程式碼和Web Form之間。並且,還可以藉助Spring框架的其他特性。
5、Asprects模組:
提供與AspectJ的整合,是一個功能強大且成熟的面向切面程式設計框架。
相關文章
- Spring 核心框架體系結構Spring框架
- Spring Security系列之體系結構概述(一)Spring
- HDFS的體系結構
- Oracle體系結構之-記憶體結構Oracle記憶體
- 【PG體系結構】PG體系結構簡單說明
- Oracle體系結構:記憶體結構和程式結構(轉)Oracle記憶體
- [Virtualization]ESXi體系結構與記憶體管理(一)體系結構記憶體
- Oracle體系結構之-物理結構Oracle
- 論軟體體系結構的演化
- BeanFactory體系結構Bean
- 【JVM體系結構】JVM
- Servlet 體系結構Servlet
- MySQL 體系結構MySql
- MongoDB 體系結構MongoDB
- 前端結構體系前端結構體
- 【EJB體系結構】
- postgresql體系結構SQL
- 體系結構1
- oracle體系結構Oracle
- SQLite體系結構SQLite
- ORACLE體系結構小結Oracle
- oracle體系結構總結Oracle
- Spring原始碼閱讀-ApplicationContext體系結構分析Spring原始碼APPContext
- 程式設計體系結構(08):Spring.Mvc.Boot框架程式設計SpringMVCboot框架
- 3:Oracle體系結構(邏輯結構)Oracle
- 1.infomrix的體系結構
- 搜尋引擎的體系結構
- java中serverlet的體系結構JavaServer
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體
- oracle體系結構(轉)Oracle
- 1、JVM體系結構JVM
- MySQL 一 體系結構MySql
- PostgreSQL體系結構概述SQL
- ORACLE-體系結構Oracle
- android 體系結構Android
- Oracle體系結構梳理Oracle
- Oracle 體系結構圖Oracle
- oracle體系結構(1)Oracle