Spring原始碼編譯
阿新 • • 發佈:2020-12-23
學習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專案中直接編寫程式碼和註釋。