原创 【spring源碼系列】之【Bean的屬性賦值】

每次進入源碼的世界,就像完成一場奇妙的旅行! 1. 屬性賦值概述 上一篇講述了bean實例化中的創建實例過程,實例化後就需要對類中的屬性進行依賴注入操作,本篇將重點分析屬性賦值相關流程。其中屬性賦值,體現在AbstractAutowi

原创 【spring源碼系列】之【Bean的實例化】

人生需要探索的熱情、堅持的勇氣以及熱愛生活熱愛自己的力量。 1. Bean的實例化 上一篇講述了bean的生命週期,其中第一步就涉及到了bean的實例化,本文重點分析bean實例化,先進入源碼中的AbstractAutowireCap

原创 【spring源碼系列】之【Bean的生命週期】

爲源碼付出的每一分努力都不會白費。 1. Bean的實例化概述 前一篇分析了BeanDefinition的封裝過程,最終將beanName與BeanDefinition以一對一映射關係放到beanDefinitionMap容器中,這一

原创 【spring源碼系列】之【BeanDefinition】

1. BeanDefinition簡介 前面講的解析bean標籤,本質就是將bean的信息封裝成BeanDefinition對象的過程,最後放入容器beanDefinitionMap中。spring 要根據 BeanDefinition對象

原创 【spring源碼系列】之【xml解析】

1. 讀源碼的方法 java程序員都知道讀源碼的重要性,尤其是spring的源碼,代碼設計不僅優雅,而且功能越來越強大,幾乎可以與很多開源框架整合,讓應用更易於專注業務領域開發。但是能把spring的源碼喫透,不僅需要花費大量時間與精力,更

原创 【spring源碼系列】之【環境搭建】

1. gradle安裝 1.1 下載gradle gradle官網下載對應的版本,筆者用的6.0.1,下載地址如下https://gradle.org/releases/,找到6.0.1,選擇complete連接下載,如下圖 1.2 配置

原创 【趣味設計模式系列】之【裝飾器模式】

1. 簡介 裝飾器模式(Decorator Pattern):動態地給一個對象添加職責,就增加功能來說,裝飾器比生成子類更靈活。 2. 示例 水果店需要給網上客戶發貨,除了包裝之外,需要對特定水果包裝加額外裝飾,比如加防僞標誌、加固、加急等

原创 【趣味設計模式系列】之【訪問者模式】

1. 簡介 訪問者模式(Visitor Pattern):表示一個作用在某對象結構中的元素的操作,它可以在不改變類的元素的前提下,定義作用於這些元素的新操作。這是《設計模式-可複用面向對象軟件的基礎》中的定義。換句通俗的話,就是類的結構元素

原创 【趣味設計模式系列】之【代理模式4--ASM框架解析】

1. 簡介 ASM是assemble英文的簡稱,中文名爲彙編,官方地址https://asm.ow2.io/,下面是官方的一段英文簡介: ASM is an all purpose Java bytecode manipulation a

原创 【趣味設計模式系列】之【代理模式3--Cglib動態代理源碼解析】

1. 圖解 上圖主要描述了Cglib動態代理的主要執行過程,下面做詳細分析,以下源碼使用的Cglib版本爲3.2.12。 2. Enhancer源碼分析 public Object create() { // 判斷是否需要創建對象

原创 【趣味設計模式系列】之【代理模式2--JDK動態代理源碼解析】

1. 圖解 上圖主要描述了JDK動態代理的執行過程,下面做詳細分析。 2. Proxy源碼分析 上一篇,在使用JDK動態代理的時候,藉助於Proxy類,使用newProxyInstance靜態方法,創建了動態代理對象,這個方法接收三個參數

原创 【趣味設計模式系列】之【代理模式1--基本原理、實戰及框架應用】

1. 簡介 代理模式(Proxy Pattern):爲其他對象提供一種代理以控制對這個對象的訪問。簡而言之,既能使被代理對象無入侵,又能附加代理自己的操作,使方法增強功能。 2. 圖解 水果店代理銷售海南芝麻蕉,此外還銷售蘋果、橘子等其他水

原创 【趣味設計模式系列】之【策略模式】

1. 簡介 策略模式(strategy):定義一組算法,將每個算法都封裝起來,並且使它們之間可以互換。 2. 圖解 商城搞多種優惠活動,顧客只能參與其中一種優惠算法。 3. 案例實現 類圖 FullDistcount滿200減20元;