原创 Spring3.1.0實現原理分析(四).屬性訪問器(PropertyAccessor)

     屬性訪問器(PropertyAccessor)和我上一篇博客《Spring3.1.0實現原理分析(三).配置數據》中提到的屬性解析器(PropertyResolver)從字面上看很相像,但是兩個接口的作用是截然不同的。屬性解析器

原创 Spring3.1.0實現原理分析(三).配置數據

      今天我想談一下,Spring從哪裏獲取配置數據? 配置數據做什麼用處? 如何存儲和訪問配置數據?就像一輛汽車,開之前總得先加油吧,不然何如工作呢。 1.  配置數據有哪些,何時加載,其作用是什麼。        我覺得Spr

原创 Spring3.1.0實現原理分析(六).實例化

     大家好,我在上篇博客中《關於循環引用的探討》中,有提及Spring創建一個對象大致可以分爲五個步驟,分別是“實例化”,“填充屬性值”,“初始化”,“登記善後處理”,“註冊單例Bean”(上述步驟暫時不考慮AOP)。PS:在Sp

原创 簡析struts2漏洞CVE-2017-5638,S02-45 (形成原理,解決方法)

簡單說一下Struts2基於“commons-fileupload”組件實現文件上傳的漏洞,漏洞編號CVE-2017-5638,S02-45. 1. 漏洞重現:      通過發包模擬器或其它你能修改請求頭Content-Type字段

原创 Spring3.1.0實現原理分析(二).國際化(i18n)

        今天和大家一起分析下Spring國際化模塊的結構。什麼是國際化呢? 我想引用李剛老師曾說過的一句話:“所謂國際化其實就是字符串的查找和替換過程”。查找就是根據code去資源文件中獲取value,替換就是把value中可能包

原创 Spring3.1.0實現原理分析(一).類型轉換

     類型轉換可以說是一個框架的基礎性功能,struts2,mybatis等開源軟件都有自己的類型轉換模塊,之所以將類型轉換作爲Spring源碼架構分析系列博客的第一篇,是因爲我覺得這個模塊在Spring衆多模塊中是處於最底層的,它只

原创 Spring3.1.0實現原理分析(五).關於循環引用的探討

       所謂循環引用是指對象之間的互相依賴形成了一個閉環,比如A依賴B,B依賴C,而C又反過來依賴A,這個是關於循環引用的基本認知。然後在Spring中循環引用又可細分成三種場景,我們逐一來分析下。 一. 單例bean基於構造函數的

原创 Spring實現原理分析(二十五).Spring Boot如何把application.*中的配置數據轉換成對象

       大家好!用過spring boot的人應該都知道“application.properties”和“application.yml”這兩個配置文件吧,最常見的就是在這兩個文件裏面配置數據庫連接信息。那麼,今天我要向大家揭祕,

原创 Spring3.1.0實現原理分析(十二).MVC核心類DispatcherServlet初始化過程

大家好,今天我們分析下DispatcherServlet的初始化過程,下面的配置大家一定不陌生吧,只要使用spring mvc框架大多會在web.xml文件中加入這麼一段配置,可見這個類是spring m

原创 Spring3.1.0實現原理分析(二十一).Dao事務分析之集成MyBatis

       大家好,這篇博客我想分析下Spring是如何集成myBatis的,下篇博客分析集成後DataSourceTransactionManager事務管理的完整流程。spring集成mybatis,spring主要扮演了兩個角色,

原创 Spring3.1.0實現原理分析(二十三).Dao事務分析之Hibernate事務管理器

       大家好,今天我們簡單聊下Spring事務管理跟Hibernate相關的部分。 一. HibernateTransactionManager 1. HibernateTransactionManager是專門爲Hiberna

原创 Spring3.1.0實現原理分析(十九).MVC異常處理

       大家好,今天談談spring mvc的異常處理架構,應該說異常處理也是mvc框架的一個不可或缺的基本功能。那麼在什麼情況下會調用異常處理器呢,z在處理器處理請求出現異常的情況下會調用異常處理器執行善後事宜。用僞代碼來表述下,

原创 Spring3.1.0實現原理分析(二十).Dao事務分析之非入侵式編碼

       大家好,從這篇博客開始我們分析下Spring的事務模塊。Spring事務的其中一個優點是非入侵式的編碼,那麼非入侵是怎麼實現的呢?其實就是通過Spring Aop實現的。關於AOP我之前寫過兩篇博客,大家最好先看下,對於理解

原创 Spring3.1.0實現原理分析(十一).MVC從桌面到web應用

       大家好,從這篇博客開始我們開始探討Spring's MVC模塊,分析它的功能,解密它的實現原理。分析MVC模塊,首先是要講明白spring在web應用中是如何被加載的,當一個 web應用啓動和卸載時,spring都會執行哪些

原创 Spring3.1.0實現原理分析(十五).MVC驗證器模塊

       大家好,今天我們分析下Spring的驗證器模塊(Validator),照理說驗證器模塊並非專用於web應用,但是通常還是在web應用中使用,所以我們還是在MVC這個大主題中討論驗證器模塊吧。spring驗證器驗證什麼東西呢?