Java基礎精析|新手必看,你真的理解spring基本原理了嗎?

spring基本原理

Spring 的核心在於控制反轉,也就是 IOC 或稱爲 DI。讓一個對象的建立不用 new 了,能夠自動的生產。java

這其實就是利用java裏的反射,反射其實就是在運行時動態的去建立、調用對象。web

Spring就是在運行時,跟xml Spring的配置文件來動態的建立對象,和調用對象裏的方法的 ;控制權由對象自己轉向容器。由容器根據配置文件去建立實例並建立各個實例之間的依賴關係 。spring

詳細解讀:數據庫

控制反轉就是把建立對象的動做交給 Spring,本身不去 new 對象。這樣的好處在於咱們只須要在使用的地方添加一個依賴便可,好比 Resource/Autowired 註解、xml 裏面配置依賴關係等,Spring 就能把這些依賴對象注入進來。爲何須要注入呢?想象一下,若是依賴了十幾個對象,用的時候難道要一個個 set 進去嗎?編程

Spring 核心解決的就是這些問題,你告訴我你要啥,我給你注入。架構

Spring還有一個核心就是AOP,這個就是面向切面編程,能夠爲某一類對象進行監督和控制(也就是在調用這類對象的具體方法的先後去調用你指定的模塊)從而達到對一個模塊擴充的功能。這些都是經過配置類達到的。app

詳細解讀: 能夠把流程和切面類比爲一個表格,假設流程從第一行向下執行,一行一行地執行流程節點,每個流程節點又能夠細分爲多個步驟,每一個步驟佔據表格的一列,這個二維的表格就是業務的常態。框架

當咱們須要加入一些與業務無關的操做,好比打印日誌、打印入參出參的時候,就能夠在單元格邊框上添加操做,這個邊框就相似於切面,這就是切面的意義。在切面上編碼能夠無感知地插入進去,能夠一次編碼處處使用。工具

spring 子項目

Spring 框架是一個分層架構,由 7 個定義良好的模塊組成。Spring 模塊構建在覈心容器之上,核心容器定義了建立、配置和管理 bean 的方式,組成 Spring 框架的每一個模塊(或組件)均可以單獨存在,或者與其餘一個或多個模塊聯合實現。學習

核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC)模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開。

詳細解讀: 核心容器是 spring 的靈魂,也是 IOC 模式的具體實現。從架構層次上看,這一層是整個 spring 的基礎。必定要理解容器的概念,容器不是 spring 的發明,大部分框架都有容器。所謂容器就是數據和對象的集合,啓動後解析配置數據以必定的形式存儲在容器中,經過掃描配置或註解生成對象並注入數據和依賴關係。容器是 IOC 的基礎。

Spring 上下文:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校驗和調度功能。

詳細解讀: 一般狀況下咱們會直接使用上下文,而不是容器。在軟件架構設計中,核心層和功能支持層每每是分開的,好比 core 和 SDK 的關係。容器定義的是核心流程、對象,上下文才是咱們真正要使用的對象。與大多數 SDK 同樣,spring 上下文提供了一些功能支持。

Spring AOP:經過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。因此,能夠很容易地使 Spring 框架管理的任何對象支持 AOP。Spring AOP 模塊爲基於 Spring 的應用程序中的對象提供了事務管理服務。經過使用 Spring AOP,不用依賴 EJB 組件,就能夠將聲明性事務管理集成到應用程序中。

詳細解讀: 前面已經提到了 AOP 的一些分析。spring 的 AOP 本質上仍是使用代理實現的,也很好理解。定義一個切面,特定狀況下攔截,而後作相應的處理。對於 AOP 掌握其用法便可,感興趣能夠看看源代碼。

Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不一樣數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,而且極大地下降了須要編寫的異常代碼數量(例如打開和關閉鏈接)。Spring DAO 的面向 JDBC 的異常聽從通用的 DAO 異常層次結構。

Spring ORM:Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的對象關係工具,其中包括 JDO、Hibernate 和 MyBatis。全部這些都聽從 Spring 的通用事務和 DAO 異常層次結構。

詳細解讀: ORM 是對象關係映射(Object Relational Mapping) 的縮寫,必定要理解這裏的映射是什麼含義。映射要解決的根本問題是 Java 對象與 SQL 語句的轉換問題,經過元數據配置驅動轉換,ORM 框架能夠屏蔽掉持久化的複雜操做。JDO、Hibernate 目前已經被 MyBatis 所取代,所以只須要學習 MyBatis 便可。

Spring Web 模塊:Web 上下文模塊創建在應用程序上下文模塊之上,爲基於 Web 的應用程序提供了上下文。因此,Spring 框架支持與 Jakarta Struts 的集成。Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工做。

Spring MVC 框架:MVC 框架是一個全功能的構建 Web 應用程序的 MVC 實現。經過策略接口,MVC 框架變成爲高度可配置的,MVC 容納了大量視圖技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。

詳細解讀: MVC 幾乎是當下 web 應用的標配,固然 MVC 也存在一些弊端,之後會有文章解讀。spring MVC 是一套成熟的 MVC 框架,可以很好地分離控制邏輯、業務邏輯和視圖,也能支持 RestFull 接口。大部分狀況下只須要掌握控制器入參、控制器出參、視圖數據傳遞便可完成開發工做,更深刻一點能夠學習 web 上下文、事件、攔截器等高級用法。

關注公衆號「程序之心」(ID:chengxuzhixin),天天給你誠意滿滿的乾貨!

相關文章
相關標籤/搜索