1. 程式人生 > 實用技巧 >Spring原始碼編譯

Spring原始碼編譯

學習spring原始碼最好是下載原始碼編譯,方便寫註釋。提前宣告,編譯原始碼可能遇到各種問題,可能和機器環境、網路等有各種關係,如果是在解決不了也可以不通過編譯原始碼方式學習,直接看原始碼也是一樣的。

機器環境:idea,jdk1.8,spring是gradle構建的,可以安裝對應的gradle,也可以使用gradleWrapper中的gradle

下載spring原始碼,上github上下載,https://github.com/spring-projects/spring-framework,下載一個5.X的RELEASE版本

下載完成spring之後修改build.gradle

repositories {
  maven{ url 
'https://maven.aliyun.com/nexus/content/groups/public/'}   maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}   mavenCentral()   maven { url "https://repo.spring.io/libs-spring-framework-build" } }

下面開始編譯,第一步編譯compileTestJava模組,開啟原始碼所在位置

gradlew :spring-oxm:compileTestJava

這個過程要等一段時間,只要看到綠色大字BUILD SUCCESSFUL就表示編譯成功,其餘的問題不用處理。

然後要將專案匯入到idea,會提示配置gradle:

之後需要一點時間編譯: 到現在已經編譯通過了,之後可以新增一個模組測試一下:

build.gradle配置依賴:

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile(project(":spring-beans"))
    compile(project(":spring-core"))
    optional(project(":spring-aop"))
    optional(project(
":spring-context")) }

編寫程式碼測試:到現在和我們平時開發的專案沒什麼不同了

public class Car {
    private String name;
    public Car(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                '}';
    }
}
@Configuration
public class Config {
    @Bean
    public Car car() {
        return new Car("瑪莎拉蒂");
    }
}
public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
        Car bean = context.getBean(Car.class);
        System.out.println(bean);
    }
}

輸出結果:Car{name='瑪莎拉蒂'}

編譯成功,之後看原始碼就可以直接在spring專案中直接編寫程式碼和註釋。