1. 程式人生 > >Spring的基本概念及其核心

Spring的基本概念及其核心

等等 template 應用 ejb 依賴註入 org 維護 基本 消息

一、Spring是什麽

Spring是一種多層的J2EE應用程序框架,其核心就是提供一種新的機制管理業務對象及其依賴關系

二、為什麽要使用Spring

1. 降低組件之間的耦合度,實現軟件各層之間的解耦。 Controller –> Service –> DAO

2. 可以使用容器提供的眾多服務,如:事務管理服務、消息服務等等。當我們使用容器管理事務時,開發人員就不再需要手工控制事務.也不需處理復雜的事務傳播。

3. 容器提供單例模式支持,開發人員不再需要自己編寫實現代碼。

4. 容器提供了AOP技術,利用它很容易實現如權限攔截、運行期監控等功能。

5. 容器提供的眾多輔作類,使用這些類能夠加快應用的開發,如: JdbcTemplate、 HibernateTemplate。

6. Spring對於主流的應用框架提供了集成支持,如:集成mybaties,Hibernate、JPA、Struts等,這樣更便於應用的開發。

三、Spring的核心及其組成

1. 核心就是提供一種新的機制管理業務對象及其依賴關系。IoC(Inversion of Control 控制反轉)/ DI (Dependency Injection依賴註入),AOP(面向切面編程)。

1.1 IoC

: Inversion of Control (控制反轉) : 就是把要在程序中實例化的對象配置到文件中,在程序中不用new來產生,而是讓容器通過配置文件返回一個給你,好處就是當需要更改業務邏輯時,方便替換對接口的不同實現類。

1.2 AOP: Aspect Oriented Programming (面向切面編程) 用來在系統中提升業務的分離,把日誌、安全、事務等東西和核心業務分離開,甚至核心業務都不知道它們的存在。基本實現就是對相關的方法進行攔截,添加所需的處理動作。

2. Spring的七大組成模塊

技術分享

四、Spring的特點

1. 輕量級:輕量級是針對重量級容器(EJB)來說的,Spring的核心包就不到1M大小,而使用Spring的核心包所需的資源也很小,所以可以在小型設備中使用。

2. 非入侵式:Spring目標是一個非入侵式的服務框架。原因是所有框架都是提供大量的功能供用戶去使用,從而簡化開發時間和成本,但由於大量的使用了框架的API,使應用程序和框架發生了大量的依賴性,無法從框架中獨立出來,更加無法使程序組件在其他程序 中使用。

3. 容器:

3.1 Spring提供了容器功能,容器可以管理對象的生命周期、對象與對象間的關系、我們可以通過編寫XML來設置對象關系和初始值,這樣容器在啟動之後,所有的對象都直接可以使用,不用編寫任何編碼來產生對象。

3.2 Spring有兩種不同的容器:

3.2.1 Bean工廠(org.springframework.beans.factory.BeanFactory)是最簡單的容器(是Spring基本的IOC容器),提供了基礎的依賴註入支持

3.2.2 應用上下文(org.springframework.context.ApplicationContext)建立在Bean工廠基礎之上,提供了系統構架服務

4. IoC / DI

4.1 Spring最核心的概念就是IoC(控制反轉,所謂控制反轉就是應用本身不負責依賴對象的創建及維護,依賴對象的創建及維護是由外部容器負責的。這樣控制權就由應用轉移到了外部容器,控制權的轉移就是所謂反轉。 ),而他的另一個名字就是DI(依賴註 入,所謂依賴註入就是指:在運行期,由外部容器動態地將依賴對象註入到組件中。 )。

4.2 使用Spring我們不必在程序中維護對象的依賴關系,只要在XML中設定,Spring容器會自已根據相關的配置去產生他們之間的關系,相當於所有的關系都是在容器運行的時候註入的,而本身他們的關系是沒有的。

5. AOP

5.1 Spring最被人重視的另一個方面就是對AOP的支持,其實AOP只是Spring支持的一個子容器

5.2 AOP在一個服務流程中插入與業務邏輯無關的系統服務邏輯,如:日誌、權限驗證、異常處理、事務等,而把這些獨立出來設計成一個對象,這樣的對象稱為Aspect。

6. 持久層:Spring提供了對持久層的整合,如對JDBC的使用加以封裝簡化,提供事務功能,對ORM工具如Hibernate等的整合。

7. Web框架整合:Spring也提供了Web的MVC解決方案,可以很好的善用IOC和AOP的功能,可以輕松的替換掉View層,如使用JPS,也可以使用熟悉的web容器,如struts技術與spring整合。

Spring的基本概念及其核心