原创 容器的初始化之 Servlet WebApplicationContext 容器

在開始之前,我們還是回過頭看一眼 web.xml 的配置。代碼如下: 即, Servlet WebApplicationContext 容器的初始化,是在 DispatcherServlet 初始化的過程中執行。 HttpServle

原创 Spring AOP動態代理實現源碼解析

寫在AOP之前 一、靜態代理和動態代理 靜態代理:在編譯期生成.class字節碼文件 動態代理:在運行時運用反射機制動態創建 1)靜態代理: 目標對象和代理對象需要實現相同的接口 代理對象需要持有目標對象(一般是目標對象實現的接口) 2)

原创 Spring事務源碼解析(聲明式事務)

切入點: spring自定義標籤的解析 上面的resolve方法點進去,執行TxNamespaceHandler.init()方法 以上兩個parser分別用來解析tx:advice和tx:annotation-driven標

原创 Spring 是如何支持 Servlet 3.0 的?

寫在前面: ServletContainerInitializer 也是 Servlet 3.0 新增的一個接口,容器在啓動時使用 JAR 服務 API(JAR Service API) 來發現 ServletContainerIniti

原创 SpringBoot 中 Servlet 加載流程的源碼分析

1. Initializer 被替換爲 TomcatStarter 當使用內嵌的 Tomcat 時,你會發現 Spring Boot 完全走了另一套初始化流程,完全沒有使用前面提到的 SpringServletContainerIniti

原创 容器的初始化之 Root WebApplicationContext 容器

首先,我們來回顧一下Tomcat啓動context容器的過程。 調用的是StandardContext.startInternal()方法,其中有一段邏輯是初始化Servlet相關的Listener: 在完成 Listener 實例

原创 Docker安裝MYSQL服務

以mysql 5.7版本爲例 1. 拉取鏡像 docker pull mysql/mysql-server:5.7 2. 啓動容器 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PA

原创 Spring MVC 一個請求的完整過程

Spring MVC 一個請求的完整過程     整個過程如上圖,首先,用戶的瀏覽器發出了一個請求,這個請求經過互聯網到達了我們的服務器。Servlet 容器首先接待了這個請求,並將該請求委託給 DispatcherServlet 進

原创 Spring源碼解讀之 統一資源加載策略

在學 Java SE 的時候,我們學習了一個標準類 java.net.URL,該類在 Java SE 中的定位爲統一資源定位器(Uniform Resource Locator),但是我們知道它的實現基本只限於網絡形式發佈的資源的查找和定

原创 Java設計模式之簡單工廠模式

一、概述       定義一個工廠類,它可以根據參數的不同返回不同類的實例,被創建的實例通常都具有共同的父類。因爲在簡單工廠模式中用於創建實例的方法是靜態(static)方法,因此簡單工廠模式又被稱爲靜態工廠方法(Static Facto

原创 關於java中元註解Inherited 的使用說明

首先解釋下元註解,就是用來中聲明註解類型時需要使用到的註解。主要包括: @Documented @Retention @Target @Inherited @Inherited作用是,使用此註解聲明出來的自定義註解,在使用此自定義註解時,

原创 Java中的註解是如何工作的

什麼是註解? 爲什麼要引入註解? Annotation是如何工作的?怎麼編寫自定義的Annotation? 註解用例 ADF (應用程序框架)和註解 自Java5.0版本引入註解之後,它就成爲了Java平臺中非常重要的

原创 Docker可視化管理工具--shipyard

今天在網上流量 docker 文章時偶然發現了一個 Docker 的 web 管理工具 shipyard,今天想起來介紹下,然而卻發現官網無法打開,去作者的 GitHub 一看缺發現這個項目已經放棄維護了,也是相當可惜啊。 PS.ship

原创 Linux環境下Redis安裝遇到的坑

1.外網ip不能訪問 解決方案: a.把配置文件redis.conf中的bind 127.0.0.1註釋掉 b.把配置文件redis.conf中的protected-mode設置成no(原來是yes)

原创 Mysql的一個雙引號錯位引發的血案

原來的sql語句如下: update `credit_bill` set receipt_no = 'DD-20181022-89757' where receipt_no = 'DD-20181022-316736'; 該sql正常執行