原创 這一次搞懂Spring Web零xml配置原理以及父子容器關係

前言 在使用Spring和SpringMVC的老版本進行開發時,我們需要配置很多的xml文件,非常的繁瑣,總是讓用戶自行選擇配置也是非常不好的。基於約定大於配置的規定,Spring提供了很多註解幫助我們簡化了大量的xml配置;但是

原创 這一次搞懂SpringMVC原理

文章目錄前言正文請求入口組件初始化調用Controller參數、返回值解析總結 前言 前面幾篇文章,學習了Spring IOC、Bean實例化過程、AOP、事務的源碼和設計思想,瞭解了Spring的整體運行流程,但如果是web開發

原创 這一次搞懂Spring事務是如何傳播的

文章目錄前言正文事務切面的調用過程事務的傳播性概念實例分析總結 前言 上一篇分析了事務註解的解析過程,本質上是將事務封裝爲切面加入到AOP的執行鏈中,因此會調用到MethodInceptor的實現類的invoke方法,而事務切面的

原创 Spring IOC原理補充(循環依賴、Bean作用域等)

文章目錄前言正文循環依賴什麼是循環依賴?Spring是如何解決循環依賴的?作用域實現原理以及如何自定義作用域作用域實現原理自定義ScopeBeanPostProcessor的執行時機SpringBoot零配置實現原理淺析總結 前言

原创 這一次搞懂Spring代理創建及AOP鏈式調用過程

文章目錄前言正文基本概念代理對象的創建小結AOP鏈式調用AOP擴展知識一、自定義全局攔截器Interceptor二、循環依賴三級緩存存在的必要性三、如何在Bean創建之前提前創建代理對象總結 前言 AOP,也就是面向切面編程,它可

原创 這一次搞懂Spring事務註解的解析

前言 事務我們都知道是什麼,而Spring事務就是在數據庫之上利用AOP提供聲明式事務和編程式事務幫助我們簡化開發,解耦業務邏輯和系統邏輯。但是Spring事務原理是怎樣?事務在方法間是如何傳播的?爲什麼有時候事務會失效?接下來幾

原创 這一次搞懂Spring自定義標籤以及註解解析原理

前言 在上一篇文章中分析了Spring是如何解析默認標籤的,並封裝爲BeanDefinition註冊到緩存中,這一篇就來看看對於像context這種自定義標籤是如何解析的。同時我們常用的註解如:@Service、@Componen

原创 這一次搞懂Spring的Bean實例化原理

文章目錄前言正文環境準備兩個重要的Processor註冊BeanPostProcessor對象Bean對象的創建createBeanInstanceaddSingletonFactorypopulateBeaninitialize

原创 設計之禪——迭代器模式

前言 迭代器想必大家不會陌生,作爲Java中內置的API,平時我們使用的也是非常多的。但你是否曾想過它和迭代器模式有什麼關聯?並且Java中已經有for循環遍歷,爲什麼還會需要這樣一個類? 定義 Java中大部分的數據結構都有返回

原创 這一次搞懂Spring的XML解析原理

前言 Spring已經是我們Java Web開發必不可少的一個框架,其大大簡化了我們的開發,提高了開發者的效率。同時,其源碼對於開發者來說也是寶藏,從中我們可以學習到非常優秀的設計思想以及優雅的命名規範,但因其體系龐大、設計複雜對

原创 設計之禪——裝飾者模式詳解(與代理模式的區別以及與其他模式的組合)

前言 相信很多初學者都對JavaAPI中的IO包感到頭大,其中的類非常多,看着看着就暈了,筆者也是一樣。不過,若是瞭解了裝飾者模式那再看IO包的設計就很清晰明瞭了。 概述 裝飾者模式動態的將責任附加到對象上。若要增加功能,裝飾者

原创 設計之禪——責任鏈模式

引言 在平時開發中如果遇到需要由多個不同的類對象來處理同一個請求時,你會怎麼做呢? if (condition) { object1.invoke(); } else if (condition1) { object2.inv

原创 設計之禪——原型模式

前言 “萬事萬物皆對象!”,這是面向對象的宗旨,在Java中我們無時無刻不在創建對象,那創建對象有哪些方式呢?可以通過new或者反射,還有就是今天要講的原型模式。那什麼是原型模式,爲什麼又要通過原型模式去創建對象呢? 正文 無論是

原创 設計之禪——組合模式

引言 昨天我寫了一篇迭代器模式的文章,其中用到餐廳菜單的例子,如果你細想過,肯定是能發現一些問題的,比如昨天的菜單中只有一級菜單(不清楚的同學可以先看看我上一篇文章,但這只是一個引子,並不影響後面的閱讀),那當某些餐廳需要往自己的

原创 Zookeeper——分佈式一致性協議及Zookeeper Leader選舉原理

文章目錄一、引言二、從ACID到CAP/BASE三、分佈式一致性協議1. 2PC和3PC2PC發起事務請求事務提交/回滾3PCcanCommitpreCommitdoCommit2. Paxos3. ZAB協議四、Zookeepe