1. 程式人生 > 程式設計 >Idea 搭建Spring原始碼環境的超詳細教程

Idea 搭建Spring原始碼環境的超詳細教程

本篇主要講解如何使用Ideal 搭建Spring的原始碼環境,想必大家都會多多少少去看過Spring的部分原始碼,一般我們都是直接點進某個Spring類 然後Idea上面去下載 ,但是確實比較麻煩,而且不能新增自己對原始碼的註釋 理解 ,本篇就來解決這個問題,手把手使用Idea 搭建Spring framework ,並且直接在Spring framework專案中新增我們自己的module 來驗證環境是否正確。 本過程會比較耗時 而且容易出錯 慢慢來吧。

1. clone spring-framework 專案

1.1 找到github spring-framwwork 專案

先登入github 找到 spring-framework專案

https://github.com/spring-projects

image-20200924100101919

我選擇的是 5.0.x

image-20200924100152972

如果你覺得你網速可以,那你可以直接從 github clone 下來, 我這裡先把專案傳到 gitee

1.2 fork 到gitee 碼雲

image-20200924100520958

拉取你要的 分支 git clone -b 分支

image-20200924101002192

2. 檢視 import-into-idea.md 檔案

在下載的原始碼中 有一個檔案是 import-into-idea 的 md檔案 裡面有關於匯入 idea需要的 注意事項,我們來開啟它

The following has been tested against IntelliJ IDEA 2016.2.2

## Steps

_Within your locally cloned spring-framework working directory:_

1. Precompile `spring-oxm` with `./gradlew :spring-oxm:compileTestJava`
2. Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
3. When prompted exclude the `spring-aspects` module (or after the import via File-> Project Structure -> Modules)
4. Code away

## Known issues

1. `spring-core` and `spring-oxm` should be pre-compiled due to repackaged dependencies.
See `*RepackJar` tasks in the build and https://youtrack.jetbrains.com/issue/IDEA-160605).
2. `spring-aspects` does not compile due to references to aspect types unknown to
IntelliJ IDEA. See https://youtrack.jetbrains.com/issue/IDEA-64446 for details. In the meantime,the
'spring-aspects' can be excluded from the project to avoid compilation errors.
3. While JUnit tests pass from the command line with Gradle,some may fail when run from
IntelliJ IDEA. Resolving this is a work in progress. If attempting to run all JUnit tests from within
IntelliJ IDEA,you will likely need to set the following VM options to avoid out of memory errors:
 -XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m
4. If you invoke "Rebuild Project" in the IDE,you'll have to generate some test
resources of the `spring-oxm` module again (`./gradlew :spring-oxm:compileTestJava`) 


## Tips

In any case,please do not check in your own generated .iml,.ipr,or .iws files.
You'll notice these files are already intentionally in .gitignore. The same policy goes for eclipse metadata.

## FAQ

Q. What about IntelliJ IDEA's own [Gradle support](https://confluence.jetbrains.net/display/IDEADEV/Gradle+integration)?

A. Keep an eye on https://youtrack.jetbrains.com/issue/IDEA-53476

大致意思就是

2.1 在原始碼目錄下執行

./gradlew :spring-oxm:compileTestJava

image-20200908133100199

image-20200908133315577

2.2 再匯入導 idea 中

會開始下載 Gradle 構建工具 等,會根據 gradle-wrapper.properties 中的指定版本下載,最好不要修改它的版本

image-20201012092914514

Idea匯入 選擇資料夾

image-20200924103331680

選擇使用Gradle

![image-20200924103346932](/Users/johnny/Library/Application Support/typora-user-images/image-20200924103346932.jpg)

靜靜的等待

image-20200908131416428

image-20200908131504088

2.3 排除 "spring-aspects"

排除了 spring-aspects 專案

開啟settings.gradle 把 //include "spring-aspects" 註釋了

image-20201012111805740

2.4 下載完依賴後 (耗時可能要個15-30分鐘)

可以發現 依賴都載入完成後,idea 就能識別我們匯入的 spring專案了,並且圖示都變亮了

image-20200924101847649

3.引入自定義模組放入SpringFramework 專案下

下面就是來驗證 我們的 原始碼環境是否 正常, 需要引入一個自定義的 模組,並且依賴 core bean 等spring依賴

3.1 新建module

右擊專案 -》 new -》 module 選擇 gradle 專案

image-20201012111453264

3.2 新增 依賴

在新建的module下 開啟 build.gradle 引入下面的依賴 spring-beans,spring-context,spring-core,spring-expression

dependencies {
 testCompile group: 'junit',name: 'junit',version: '4.12'

 compile(project(":spring-beans"))
 compile(project(":spring-context"))
 compile(project(":spring-core"))
 compile(project(":spring-expression"))
}

3.3 檢查 module 是否被引入

開啟settings.gradle 新增 include 'spring-demo' ,預設使用我說的建立module 方式 會自動新增的最好檢查一下

3.4 編寫 測試程式碼

3.4.1 定義Person類

package com.johnny.bean;

/**
 * @author johnny
 * @create 2020-09-07 下午11:22
 **/
public class Person {

 private String name;

 private int age;

 @Override
 public String toString() {
 return "Person{" +
 "name='" + name + '\'' +
 ",age=" + age +
 '}';
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public int getAge() {
 return age;
 }

 public void setAge(int age) {
 this.age = age;
 }
}

3.4.2 resources 下新建 demo.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 class="com.johnny.bean.Person" id="person">
 <property name="name" value="johnny"/>
 <property name="age" value="10"/>
 </bean>
</beans>

3.4.3 新建main 載入xml 並且從容器中獲取 bean

package com.johnny.bean;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author johnny
 * @create 2020-09-07 下午11:24
 **/
public class DemoMain {

 public static void main(String[] args) {
 ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("demo.xml");
 Person person = classPathXmlApplicationContext.getBean(Person.class);
 System.out.println(person);
 }
}

可以看到 能獲取到 容器中的Bean ,表示我們的spring環境搭建正確

image-20201012110602726

總結

本篇主要講解 如何使用idea 搭建spring原始碼環境,過程其實很耗時 而且特別容易出錯,總結就是 1. clone 程式碼,2.進入原始碼目錄執行 ./gradlew :spring-oxm:compileTestJava3.匯入idea 中 4. 排除 exclude the spring-aspects module 5.自定義module 驗證環境 , 祝願大家環境搭建順利。。。最好開個牆

本文由部落格一文多發平臺 OpenWrite 釋出!

到此這篇關於Idea 搭建Spring原始碼環境的文章就介紹到這了,更多相關Idea Spring原始碼環境內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!