Spring

Spring框架是一個(gè)創(chuàng)建并管理bean(類)的容器;使用反射技術(shù)來創(chuàng)建bean的實(shí)例,設(shè)計(jì)模式上使用工程模式(BeanFactory)。Spring容器默認(rèn)按照單例的方式來創(chuàng)建bean,可以通過設(shè)置< bean>節(jié)點(diǎn)中的scope屬性來設(shè)置為每次獲取時(shí)創(chuàng)建不同的實(shí)例 <bean scope="prototype/>

1. Spring的體系結(jié)構(gòu)組成?

Spring由核心容器(Core Container)、AOP(Aspect Oriented Programming)、數(shù)據(jù)訪問及集成(Data Access/Integratioin)、Web、Test等模塊組成。
核心容器:由spring-beans, spring-core, spring-context和spring-expression 4個(gè)模塊組成。

  • spring-core:提供了框架的基本組成部分,包括控制反轉(zhuǎn)(Inversion of Control,IOC)和依賴注入(Dependency Injection,DI)功能。
  • spring-beans:提供了BeanFactory,是工廠模式的一個(gè)經(jīng)典實(shí)現(xiàn),Spring將管理對(duì)象稱為Bean。
  • spring-context:給spring提供一個(gè)運(yùn)行時(shí)環(huán)境,用以保存各個(gè)對(duì)象的狀態(tài)。
  • spring-expression:spring表達(dá)式語言。

AOP模塊

  • spring-aop:是 Spring 的另一個(gè)核心模塊,提供了一個(gè)符合 AOP 要求的面向切面的編程實(shí)現(xiàn)。以動(dòng)態(tài)代理技術(shù)為基礎(chǔ),允許定義方法攔截器和切入點(diǎn),將代碼按照功能進(jìn)行分離,以便干凈地解耦。
  • spring-aspects:提供了與AspectJ的集成功能,AspectJ是一個(gè)功能強(qiáng)大且成熟的AOP框架。

數(shù)據(jù)訪問及集成

  • spring-jdbc:提供了一個(gè)JDBC的抽象層, 用于簡(jiǎn)化JDBC。主要是提供 JDBC 模板方式、 關(guān)系數(shù)據(jù)庫對(duì)象化方式, 主要實(shí)現(xiàn)類是 JdbcTemplate、 SimpleJdbcTemplate。
  • spring-tx:事務(wù)控制,通過它的AOP配置,可以靈活的配置在任何一層,但是在很多的需求和應(yīng)用,直接使用JDBC事務(wù)控制還是有其優(yōu)勢(shì)的。
  • spring-orm:對(duì)象關(guān)系映射,集成orm框架,主要集成Hibernate、Java Persistence API(JPA)和Java Data Object(JDO)用于資源管理、數(shù)據(jù)訪問對(duì)象(DAO)的實(shí)現(xiàn)和事務(wù)策略。
  • spring-oxm:對(duì)象xml映射,OXM是Object to XML Mapping的縮寫,例如:jaxb, castor xmlbeans,JiBx,XStream等。
  • spring-tx 模塊:事務(wù)模塊,支持用于實(shí)現(xiàn)特殊接口和所有POJO(普通Java對(duì)象)類的編程和聲明式事務(wù)管理。

Web

  • spring-web:提供最基礎(chǔ)的web支持,主要建立在核心容器上,通過Servlet或者Listener來初始化IOC容器,也包括一些與Web相關(guān)的支持。

  • spring-webmvc:實(shí)現(xiàn)了Spring MVC的Web應(yīng)用

  • spring-websocket:Spring4.0以后新增的模塊,實(shí)現(xiàn)雙工異步通訊協(xié)議,實(shí)現(xiàn)了WebSocket和SocketJS,提供Socket通信和web端的推送功能。

Test

  • spring-test 模塊主要為測(cè)試提供支持的,支持使用JUnit或TestNG對(duì)Spring組件進(jìn)行單元測(cè)試和集成測(cè)試。

2. Spring有哪些優(yōu)勢(shì)?

  • 方便解耦,簡(jiǎn)化開發(fā)
    通過 Spring 提供的 IoC 容器,可以將對(duì)象間的依賴關(guān)系交由 Spring 進(jìn)行控制,降低了程序之間的耦合度。
  • AOP編程的支持
    通過 Spring 的 AOP 功能,方便進(jìn)行面向切面的編程,實(shí)現(xiàn)了傳統(tǒng)OOP不能實(shí)現(xiàn)的功能。
  • 聲明式事務(wù)的支持
    通過聲明式方式靈活的進(jìn)行事務(wù)的管理,提高開發(fā)效率和質(zhì)量。
  • 方便程序的測(cè)試
    可以用非容器依賴的編程方式進(jìn)行幾乎所有的測(cè)試工作,測(cè)試不再是昂貴的操作,而是隨手可做的事情。
  • 方便集成各種優(yōu)秀框架
    Spring 可以降低各種框架的使用難度,提供了對(duì)各種優(yōu)秀框架(Struts、Hibernate、Quartz等)的直接支持。
  • 降低 JavaEE API 的使用難度
    Spring 對(duì) JavaEE API(如 JDBC、JavaMail等)進(jìn)行了封裝,使這些 API 的使用難度大為降低。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容