很顯然,黑貓同學還是掛了,還是老老實實的惡補基礎吧,
一、關于Spring
Spring是一個分層的Java SE/EE應用一站式的 輕量級開源框架 ,
Spring主要優點包括:
- 方便解耦,簡化開發,通過Spring提供的IoC容器,我們可以將物件之間的依賴關系交由Spring進行控制,避免硬編碼造成的程式耦合度高,
- AOP編程的支持,通過Spring提供的AOP功能,方便進行面向切面編程,
- 宣告式事務的支持,在Spring中,我們可以從單調煩悶的事務管理代碼中解脫出來,通過宣告式方式靈活地進行事務的管理,提高開發效率和質量,
- 方便程式的測驗,可以用非容器依賴的編程方式進行幾乎所有的測驗作業,
- 方便集成各種優秀框架,Spring提供了對各種優秀框架的直接支持,
Spring核心是 IOC 和 AOP ,
IOC
IOC(Inversion Of Controll,控制反轉)是一種設計思想,將原本在程式中手動創建物件的控制權,交由給Spring框架來管理,IOC容器是Spring用來實作IOC的載體,IOC容器實際上就是一個Map(key, value),Map中存放的是各種物件,
AOP
AOP(Aspect-Oriented Programming,面向切面編程)能夠將那些與業務無關,卻為業務模塊所共同呼叫的邏輯或責任(例如事務處理、日志管理、權限控制等)封裝起來,便于減少系統的重復代碼,降低模塊間的耦合度,并有利于未來的可擴展性和可維護性,使用AOP之后我們可以把一些通用功能抽象出來,在需要用到的地方直接使用即可,這樣可以大大簡化代碼量,提高了系統的擴展性,
Spring AOP / AspectJ AOP 的區別?
Spring AOP屬于運行時增強,而AspectJ是編譯時增強,
Spring AOP基于代理(Proxying),而AspectJ基于位元組碼操作(Bytecode Manipulation),
AspectJ相比于Spring AOP功能更加強大,但是Spring AOP相對來說更簡單,如果切面比較少,那么兩者性能差異不大,但是,當切面太多的話,最好選擇AspectJ,它比SpringAOP快很多,
二、Spring體系結構
如下圖所示,整個spring框架按其所屬功能可以劃分為五個主要模塊,這五個模塊幾乎為企業應用提供了所需的一切,從持久層、業務層到表現層都擁有相應的支持,這就是為什么稱Spring是一站式框架的原因,
1、核心模塊(Core Container)
Spring的核心模塊實作了IoC的功能,它將類和類之間的依賴從代碼中脫離出來,用配置的方式進行依賴關系描述,由IoC容器負責類的創建,管理,獲取等,BeanFactory介面是Spring框架的核心介面,實作了容器很多核心的功能,
Context模塊構建于核心模塊之上,擴展了BeanFactory的功能,包括國際化,資源加載,郵件服務,任務調度等多項功能,ApplicationContext是Context模塊的核心介面,
運算式語言(Expression Language)是統一運算式語言(EL)的一個擴展,支持設定和獲取物件屬性,呼叫物件方法,操作陣列、集合等,使用它可以很方便的通過運算式和Spring IoC容器進行互動,
2、AOP模塊
Spring AOP模塊提供了滿足AOP Alliance規范的實作,還整合了AspectJ這種AOP語言級的框架,通過AOP能降低耦合,
3、資料訪問集成模塊(Data Access/Integration )
該模塊包括了JDBC、ORM、OXM、JMS和事務管理:
- 事務模塊:該模塊用于Spring管理事務,只要是Spring管理物件都能得到Spring管理事務的好處,無需在代碼中進行事務控制了,而且支持編程和宣告性的事務管理,
- JDBC模塊:提供了一個JBDC的樣例模板,使用這些模板能消除傳統冗長的JDBC編碼還有必須的事務控制,而且能享受到Spring管理事務的好處,
- ORM模塊:提供與流行的“物件-關系”映射框架的無縫集成,包括hibernate、JPA、MyBatis等,而且可以使用Spring事務管理,無需額外控制事務,
- OXM模塊:提供了一個對Object/XML映射實作,將Java物件映射成XML資料,或者將XML資料映射成java物件,Object/XML映射實作包括JAXB、Castor、XMLBeans和XStream,
- JMS模塊:用于JMS(Java Messaging Service),提供一套“訊息生產者、訊息消費者”模板用于更加簡單的使用JMS,JMS用于在兩個應用程式之間,或分布式系統中發送訊息,進行異步通信,
4、Web模塊
該模塊建立在ApplicationContext模塊之上,提供了Web應用的功能,如檔案上傳、FreeMarker等,Spring可以整合Struts2等MVC框架,此外,Spring自己提供了MVC框架Spring MVC,
5、測驗模塊
Spring可以用非容器依賴的編程方式進行幾乎所有的測驗作業,支持JUnit和TestNG等測驗框架,
最后
看完本次分享的內容,你是否對Spring有了一個更深層次的認識了呢?
需要更多面試資源的小伙伴,可以關注我的公眾號【Java技術zhai】獲取,
如果有哪位有緣的朋友看到了這篇文章,恰好有對本次Spring分享的內容補充 ,歡迎留言交流,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/2136.html
標籤:其他
上一篇:CSS(二)
下一篇:JS(一)
