原创 Druid監控踩坑指南

概述 最近項目組在準備接入各種指標監控系統,筆者負責的部分剛好涉及到了 Druid,故記錄一下在過程中遇到的各種情況和坑。 1. 直接使用 Druid 直接使用 Druid 的監控功能,需要直接將它提供的 Servlet 配置到 Web 容

原创 基於 SQL 解析的 JPA 多租戶方案

概述 最近在對一個使用 JPA 的老項目進行多租戶改造,由於年代過於久遠,陳年屎山讓人實在不敢輕舉妄動,最後只能選擇一個改造成本最小的方案,那就是通過攔截器改 SQL,動態添加租戶 ID 作爲查詢條件。 本篇文章用於記錄筆者基於該方案解決此

原创 深入理解 SpringAOP(二):AOP的執行流程

概述 在之前的文章中,我們已經對 SpringAOP 的關鍵組件進行了描述,並且瞭解了其基本操作和流程。在本文中,我們將進一步深入源碼,揭示 SpringAOP 的內部實現細節,理解其運行機制的每個環節,包括切面的織入方式、代理對象的創建過

原创 Hexo6 升級踩坑指南

前言 這一年多好久沒有更新自己的博客了,攢了不少筆記要整理,剛好換了電腦需要重新配環境,於是決定趁這個機會給自己用來搭建博客的 hexo 和 next 主題升個級(其實是重新安裝),然後把筆記整理整理潤色一下重新發到博客上。 雖然這兩者的安

原创 深入理解 SpringAOP(一):AOP 組件概述

概述 spring-aop 模塊是 Spring 框架中最重要的組件之一,它爲我們提供了強大的 AOP 功能,併爲其他擴展功能(如聲明式事務、聲明式異步處理等)提供了支持。在本文中,我們將深入探討 SpringAOP 的源碼,從代理對象的創

原创 深入理解 SpringAOP(三):AspectJ支持

概述 在之前的文章中,我們已經對 SpringAOP 的運行機制有了清晰的瞭解。然而,在本文中我們將補充關於 AspectJ 切面的內容。 儘管我們可以使用 AspectJ 的註解來定義切面邏輯,但實際上它們的實現仍然基於 Advisor

原创 深入理解 SpringMVC

前言 SpringMVC 可以說是我們日常開發中最依賴的 Spring 組件了,它基於 Servlet 容器實現,允許我們通過註解的方式開發 Web 程序。在本篇文章,將深入 SpringMVC 源碼,梳理 SpringMVC 對 Web

原创 預編譯SQL爲什麼能夠防止SQL注入

前言 之前我一個搞網絡安全的朋友問了我一個的問題,爲啥用 PreparedStatement 預編譯的 SQL 就不會有被 SQL 注入的風險? 第一時間我聯想到的是八股文中關於 Mybatis 的腳本 ${} 和 #{} 的問題,不過再想

原创 深入理解Spring事件機制(一):廣播器與監聽器的初始化

前言 Spring 從 3.x 開始支持事件機制。在 Spring 的事件機制中,我們可以令一個事件類繼承 ApplicationEvent 類,然後將實現了 ApplicationListener 的 Bean 註冊到 spring 容器

原创 深入理解Spring事件機制(二):事件的傳播

前言 Spring 從 3.x 開始支持事件機制。在 Spring 的事件機制中,我們可以令一個事件類繼承 ApplicationEvent 類,然後將實現了 ApplicationListener 的 Bean 註冊到 spring 容器

原创 深入理解Spring註解機制(一):註解的搜索與處理機制

前言 衆所周知,spring 從 2.5 版本以後開始支持使用註解代替繁瑣的 xml 配置,到了 springboot 更是全面擁抱了註解式配置。平時在使用的時候,點開一些常見的等註解,會發現往往在一個註解上總會出現一些其他的註解,比如 @

原创 深入理解Spring容器初始化(二):BeanFactory的初始化

前言 我們知道,spring 的啓動其實就是容器的啓動,而一般情況下,容器指的其實就是上下文 ApplicationContext。 AbstractApplicationContext 作爲整個 ApplicationContext 體系

原创 深入理解Spring別名機制

前言 在 spring 容器中,允許通過名稱或別名來獲取 bean ,這個能力來自於頂層接口 AliasRegistry,分析類下屬的關係圖,可以看到,幾乎所有主要容器都直接或間接的實現了 AliasRegistry 接口。 AliasR

原创 深入理解Spring註解機制(二):元註解解析與屬性映射

前言 衆所周知,spring 從 2.5 版本以後開始支持使用註解代替繁瑣的 xml 配置,到了 springboot 更是全面擁抱了註解式配置。平時在使用的時候,點開一些常見的等註解,會發現往往在一個註解上總會出現一些其他的註解,比如 @

原创 深入理解Spring容器初始化(一):上下文的初始化

前言 我們知道,spring 的啓動其實就是容器的啓動,而一般情況下,容器指的其實就是上下文 ApplicationContext。 AbstractApplicationContext 作爲整個 ApplicationContext 體系