spring源碼解析(一) 環境搭建(各種坑的解決辦法)


  上次搭建spring源碼的環境還是兩年前,依稀記得那時候也是一頓折騰,奈何當時沒有記錄,導致兩年后的今天把坑重踩了一遍,還遇到了新的坑,真是欲哭無淚;為了以后類似的事情不再發生,這次寫下這篇博文來必坑;

  一、源碼下載

  github直接搜索即可.地址已拼好並直接定位到我此次用到的5.2版本:https://github.com/spring-projects/spring-framework/tree/5.2.x,為了后續看源碼寫注釋方便,這里直接下載的zip包

  二、gradle下載

  spring源碼用的項目構建工具是gradle而不是maven,這里直接寫必坑策略,就不掩飾錯誤了,據說spring5.2.x版本搭載的gradle版本不能低於5.6不能高於5.7,本人親測過gradle的3.2,5.1和7.0版本都不構建失敗,最后使用5.6.4版本成功構建,關於這塊之前也百度過,也瞄到過說更改spring源碼中gradle的版本的,由於我沒有實際操作,此處略去不管,最后,gradle下載地址:https://services.gradle.org/distributions/ 選擇對應-all版本下載即可;下載完成后別忘了配置環境變量

  三 導入idea

1.import project選擇解壓后的源碼目錄

 

 

 2.如圖示選擇后點擊next

 

 

 3.如圖示選擇gradle的安裝目錄,點擊finish等待gradle構建項目,此過程較長,我第一次導入大概花了近20分鍾

  

 

 

 

  如果按照上面提供的源碼和gradle版本導入構建的話大概率不會有什么問題了,萬一有其他問題多半是gradle版本的問題了,百度一搬都能解決

  四、新建自己的測試module

  1.選中項目右鍵new-module,如圖

 

 

 直接next,自定義一下artifactid后一直無腦下一步即可,此時只需等待gradle去構建這個測試模塊,構建完后目錄齊全,如圖:

 

 

 為方便閱讀和debug源碼,需要寫一個測試類來復現spring容器創建bean的過程,關鍵代碼如下:

/**
 * @Author dll
 * @create 2021/4/23 15:02
 * @describe
 */
public class Test01 {

    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("test.xml");
        Object aaa = ac.getBean("aaa");
        System.out.println(aaa);
    }

}

xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="aaa" class="com.dll.beans.AAA">
        <property name="name" value="董琳琳"></property>
    </bean>
</beans>

接下來按道理就能直接能運行main方法了,但是我出現了一個無解的報錯:Error:Kotlin: warnings found and -Werror specified;尷尬的是這個報錯竟然百度不到,於是猜測是Kotlin版本問題,結果換了版本號還是不行,百度折騰半天靈光一現,將idea從2018.3.3換成2019.2.3,重復上述步驟重新導入構建,直接成功!也不知道是什么原因,也不想去糾結了,哈哈,至此,環境構建完畢,接下來是枯燥的源碼閱讀之旅,希望能夠堅持吧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM