原创 maven無法下載間接依賴包

一、起因   A模塊依賴B模塊,B模塊依賴C和D模塊(C和D是其他項目中的jar);A模塊需要用到C或D中的類,通過B模塊間接依賴了C和D。此時打包A的時候報錯,大致意思是,無法編譯使用C或D中的類。 給A模塊打包,執行命令: m

原创 CGLIB動態代理使用介紹

一、前言   說到動態代理,開發者們第一時間想到的就是JDK動態代理和cglib動態代理。瞭解Spring的同學應該知道,Spring AOP功能的底層實現,就是使用的這兩種動態代理。 兩者區別 JDK的動態代理機制只能代理實現

原创 JDK動態代理介紹與使用

一、介紹   JDK動態代理是代理模式的一種實現方式。因爲它是基於接口來做代理的,所以也常被稱爲接口代理。在JDK動態代理中有兩個重要的角色: InvocationHandler(Interface) 用戶實現這個接口,來編寫代

原创 spring源碼:bean加載之從緩存中獲取bean

一、目的   單例bean在spring的容器中只會被創建一次,被創建的bean會保存在DefaultSingletonBeanRegistry類的singletonObjects屬性中。singletonObjects的類型是一

原创 spring源碼:bean加載之創建bean-提前曝光bean的Object-Factory

一、介紹   提前曝光bean的Object-Factory是spring爲了解決bean循環依賴的一種方法。 什麼是循環依賴 spring加載一個bean需要兩個步驟:1.創建bean;2.給這個bean填充屬性 如上圖,加

原创 spring源碼:解析xml中的import和alias標籤

一、介紹   spring允許xml中有兩類標籤:默認標籤和擴展標籤 。 默認標籤有四種:beans、bean、import、alias ; 其中bean標籤爲最基礎的標籤,其他三個標籤都是圍繞bean標籤來做封裝或者修飾的

原创 ArrayList之初始化源碼

一、下酒菜 聊源碼之前,先看點關於ArrayList初始化的一些面試題 ArrayList的數據結構是怎樣的? 爲什麼ArrayList中數組變量elementData,不使用private修飾? new ArrayList()

原创 Mac版idea常用快捷鍵

查看類 查看類繼承關係:Ctrl+H 查看類結構圖:option+commond+U 查看類中的方法和屬性:commond+F12(只顯示一次) 查看類中的方法:commond+7(固定顯示在左側) 生成代碼 生成常用代碼

原创 spring源碼:註冊解析的BeanDefinition

一、介紹   spring在解析xml中的bean標籤時,會把該標籤的所有信息封裝到一個GenericBeanDefinition實例中。然後把該GenericBeanDefinition實例註冊到一個beanDefinition

原创 spring源碼:bean加載之從bean實例中獲取對象(getObjectForBeanInstance)

一、目的   spring管理的bean實例分爲兩類,一類是實現FactoryBean接口的Bean,一類是其它類型的Bean。getObjectForBeanInstance目的是爲了從FactoryBean類型的bean實例中

原创 spring源碼:bean加載之獲取單例(getSingleton()方法)

一、介紹   從spring容器中獲取單例時有兩種情況:緩存中存在和緩存中不存在。緩存中不存在的情況,需要調用getSingleton()方法來獲取單例。本章主要介紹獲取單例的整體流程,該邏輯中創建bean的步驟較爲複雜,放在後面

原创 spring源碼:bean加載之創建bean-初始化bean

一、介紹   初始化bean的動作是在創建bean和給bean填充屬性之後,目的是爲了調用用戶自定義的初始化方法。期間還涉及到Aware接口和BeanPostProcessor的處理,處理流程如下: 二、bean加載流程 獲取

原创 spring源碼:bean加載之創建bean-屬性填充

一、介紹   在spring可以通過配置的方式指定bean的屬性值,這些屬性值可以是容器中的其他bean,也可以是配置的一個常量。如下 <bean id="person" class="com.kaka.spring.po

原创 spring源碼:bean加載之創建bean-創建BeanWrapper

一、介紹   BeanWrapper是對bean實例的一層包裝,目前在spring中有四種實例化bean的方式,分別爲:supplier、工廠方法、有參構造函數、無參構造函數。 二、bean加載流程 獲取用戶傳入name對應的b

原创 Springboot項目啓動報錯:Failed to create converter for [%clr] keyword

完整報錯信息如下: Exception in thread "main" java.lang.IllegalStateException: Logback configuration error detected: ERROR