原创 用 redis 設計 分佈式鎖 (一)

項目開發中我們經常需要用到分佈式鎖,尤其是在集羣環境多臺服務器情況下,比如 接口請求、定時任務等業務環境中; 今天 我們先介紹一種 redis 分佈式鎖,在普通項目中就可以使用,代碼如下: 1、redis 加鎖和釋放鎖代碼如下: pac

原创 spring AOP 代理實例調用(功能增強)的源碼解析(十)

看這一篇前最好先看上一篇,具有連續性:https://blog.csdn.net/nandao158/article/details/105873916 這篇解析代理實例調用的核心方法: 1、接着上篇: //如果該方法沒有執行鏈,則說明

原创 採用 redis 設計分佈式鎖 (二)

上一篇我們介紹了一種redis 分佈式鎖,介紹了其應用場景和一些存在的問題,而今天我們介紹 redis 第二種分佈式鎖的使用; 這種鎖同時採用lua腳本保證原子性能很好解決以上問題。實例如下: 1、代碼如下: package com.j

原创 用 spring中的 redis 模板類(StringRedisTemplate)設計分佈式鎖(三)

上兩篇介紹了兩種 redis 分佈式鎖,均是redis 自己類庫實現的,而今天這種redis 分佈式鎖,是spring 封裝的redis 模板類,開箱即用簡單方便。 1、工具類如下: import org.slf4j.Logger;

原创 java 代碼 用 wkHtmlToPdf 工具生成 pdf 文檔 並 設置自定義 字體

wkHtmlToPdf  的簡單使用我在這裏就不說了,今天主要說一下 設置  自定義字體問題,我經過很多次的測試,終於成功。 1、上代碼 import java.io.File; import java.io.IOException;

原创 用 mybatis-generator 通過 main 方法 自動生成代碼 並 在字段上加註釋

mybatis-generator 是我們常用的生成代碼的工具,一般都是在開發工具上配置啓動生成,這種方法比較麻煩;而今天我們通過一個工具類自動生成,方便、快捷,不會因爲開發環境差異,而影響使用。 1、generatorConfig.xm

原创 spring 單實例循環依賴之源碼解析(七)

spring依賴注入的主幹核心源碼我們上篇已經分析過了,今天我們重點解析 spring 單實例循環依賴問題,爲啥強調單實例呢?因爲在spring 中 多實例和有參構造函數上帶註解的是無法循環依賴的(這塊內容以後也會細講)。首先說一下單實例

原创 spring初始化解析xml 配置文件一

從本篇開始我們正式進入spring源碼學習,首先從我們最熟悉的解析xml 配置文件開始。依次跟蹤代碼,緊接着上一篇的開始,如下,創建一個測試方法: import com.xiangxue.jack.bean.Student; impor

原创 spring 源碼 refresh() 中的方法 invokeBeanFactoryPostProcessors(beanFactory) 解析(五)

前面已經通過  ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); 方法 解析了,spring各種標籤 、創建工廠、註解掃描等,現在我們接着往下

原创 spring 採用 SPI 設計思想 擴展自定義標籤 實現原理 (四)

上一篇我們主要分析了spring自帶的自定義標籤componet-scan 註解標籤。爲了加深大家對這些內容的理解,今天我們自己創建一個自定義標籤,融入到spring框架中,體現其擴展性; 1、在spring.xml 文件中 創建一個自定

原创 spring 源碼核心方法之 finishBeanFactoryInitialization(beanFactory)解析(六)

今天我們講解spring 啓動過程中最核心方法,我們計劃分多篇講解,今天解析該方法的主幹核心,後幾篇我們解析該方法相關的分支方法(爲啥啊?因爲這個方法太重要了!),廢話少說,看源碼! 1、來到   AbstractApplicationC

原创 spring 創建註解(@Service @Component 等)掃描器源碼解析(三)

上一篇介紹spring 自定義掃描標籤解析過程,中間有個重要的知識點我們單獨取出來分析,就是註解掃描器的創建 1、ComponentScanBeanDefinitionParser implements BeanDefinitionPar

原创 spring 自定義標籤(component-scan)的詳細解析 二

上一篇我們講解了spring.xml 和默認標籤的解析過程,今天我們重點講解自定義標籤 (以註解掃描標籤component-scan爲例),詳細講解掃描標籤的解析過程並把有註解的類,封裝成BeanDefinition對象。 1、從Defa

原创 idea 導入 spring 源碼

從今天開始咱們一起深入學習研究spring源碼  第一節! 1、所需工具:JDK1.8版本、spring5.1版本、gradle 6.0版本、idea中安裝插件kotlin 2、下載好的gradlle 解壓縮  gradle-6.0-al

原创 通過 idea、maven 構建spring 項目

很多小夥伴在開發過程中、都是在原有的項目上做功能添加或修改,很少有直接創建新的項目體驗,這篇文章分享一下如何創建spring項目同時把spring 相關jar包換成編譯後的spring源碼,方便在學習源碼過程中加註釋。這是本篇的兩個重點!