原创 循環依賴報錯 Requested bean is currently in creation: Is there an unresolvable circular reference?

原因 今天做項目遇到了這個坑,字面上看是觸發了循環依賴,由於我使用的是構造器注入,所以遇到循環依賴就會導致報錯。如圖所示,我的依賴鍊形成了一個環路。 爲什麼構造器注入不行 因爲要實現循環依賴就得在A調用B,B再調用A的時候,A提

原创 基於IDEA快速搭建servlet

前言 本文基於IDEA的WEB模板,快速搭建servlet項目 一、構建WEB項目 打開IDEA,如下圖按照File>>New>>Project的順序點擊按鈕 如下圖,第二個步驟是選擇Tomcat,官網就可以下載 如下圖,輸入

原创 工廠模式——烘烤OO披薩

一、簡單披薩店 我們在對象村開了家簡單的披薩店,下面是披薩店製作披薩的代碼: public class PizzaStore { Pizza orderPizza(String type) { Pizza

原创 從零開始基於IDEA和獨立的Tomcat構建servlet

前言: 因爲使用IDEA的WEB模板構建項目會省去很多細節,所以爲了更加了解servlet項目結構,我們採用IDEA最基本的JAVA項目來構建。 一、構建JAVA項目 打開IDEA,如下圖按照File>>New>>Project的

原创 Get與Post的區別及HTTP協議結構

Get與Post的區別 我估計每個Java程序員都被面試官問過這個問題。 很多童鞋會答:GET是一個簡單的請求,POST則可以發送用戶數據。這個答案沒有問題,但是還不全面,因爲GET請求也是可以向服務器發送參數的。 Get與Pos

原创 Effective Java 第一章——引言

本書大多數規則都源於以下幾條基本原則: 1、清晰性和簡潔性:模塊用戶不該被模塊行爲迷惑 2、代碼應該被重用而不是被拷貝 3、模塊之間的依賴應儘可能最小 4、錯誤應該儘早被檢測出,最好是編譯時 Java支持四種類型 1、接口 2、類

原创 JavaSe IO

文件創建 用如下代碼在D盤的LOLFolder文件夾下創建一個LOL.exe文件,當然現在只是在內存中創建了,硬盤實際上並沒有。 File file = new File("d:/LOLFolder", "LOL.exe");

原创 Spring揭祕——什麼是IOC和DI

一、IoC的基本概念 IoC全稱Inversion of Control,即控制反轉。它的核心技術是DI (Dependency Injection),即依賴注入。 什麼是IOC?打個比方,我們要做一個系統,爲客戶提供股票新聞。通

原创 Hello Tomcat

前言: 現在web開發都用框架,然而我們需要返璞歸真,揭開它的本來面目,這樣才能弄清原理,一起重新學習下Tomcat吧 demo實現的功能 在瀏覽器地址欄輸入地址,顯示我們開發的頁面。 開發步驟 1、在開發環境中創建HTML文件

原创 單例模式製造獨一無二的對象

爲什麼使用單例模式(why) 爲什麼不用靜態全局變量呢?如果將對象賦值給全局變量,那麼你必須在程序一開始就創建對象,非常消耗資源。利用單例模式,就可以在需要的時候才創建對象。另外全局變量可能指向多個對象,這違反了實例唯一性。 什麼

原创 一次慢sql導致的超時

一、問題來源 該sql是爲了查詢出某個付款單號PAY_BILL_NO 爲X且請求流水號APPLY_BIZ_ID滿足條件的付款訂單: select <include refid="Base_Column_List

原创 從咖啡到裝飾者模式

前言:使用裝飾者的目的(why) 裝飾者採用運行時擴展,遠比編譯時期的繼承威力大。它還能夠在不修改底層代碼的情況下,給你的或者別人的對象賦予新的職責。 先來杯咖啡 Boss的咖啡店與時俱進準備搞一套網上點咖啡系統,它們最初的代碼設

原创 Spring擴展

Spring實例化流程 要想對Spring進行擴展,首先得先了解Spring實例化流程。 如下UML圖所示,像普通Java類一樣,運行Main方法後,JVM將類文件加載到方法區。 public class Test { publ

原创 OpenJdk源碼閱讀——Object

wait() public static void main(String[] args) throws InterruptedException { Object o = new Object();