Spring-framework源码分析(一)调试环境搭建
本文主要内容: 搭建spring-framework 编译调试环境源码
准备工作 准备一下工具
JDK11
(或者JDK8以上即可,本系列采用JDK11)
idea 开发工具
源码准备
将代码clone
或者Download ZIP
均可,这里推荐clone
的方式,因为可以方便的对比变化:
Idea导入项目
打开 Idea
,选择 open or import
:
Spring会自动下载 gradle
,但可能会很慢,耐心等待一下即可
在 build.gradle
文件中的 repositories
加入阿里云仓库 ,如图所示
1 2 3 4 5 6 repositories { mavenCentral() maven { url 'https://maven.aliyun.com/repository/public/' } maven { url "https://repo.spring.io/libs-spring-framework-build" } maven { url "https://repo.spring.io/milestone" } }
在项目的根目录下,有一个 import-into-idea
文件,里面描述了如何导入idea,但其实不按照上面也行
新建模块
由于 Spring
源码使用 gradle
构建源码,所以我们需要新建一个 gradle
模块
取个模块名,我这里就叫做 spring-examples
:
1 2 3 4 5 6 7 8 dependencies { compile (project (":spring-beans" )) compile (project (":spring-context" )) compile (project (":spring-core" )) compile (project (":spring-aop" )) optional("org.aspectj:aspectjweaver" ) testCompile group : 'junit' , name: 'junit' , version: '4.12' }
测试
1 2 3 4 5 6 7 8 9 10 11 12 13 package com.github.code13.app;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.EnableAspectJAutoProxy;@ComponentScan("com.github.code13") public class AppConfig { }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package com.github.code13.bean;import org.springframework.stereotype.Component;@Component public class B { public B () { System.out.println("B创建了" ); } public void test1 () { System.out.println("被增强的方法" ); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package com.github.code13;import com.github.code13.app.AppConfig;import com.github.code13.bean.B;import org.junit.jupiter.api.Test;import org.springframework.context.annotation.AnnotationConfigApplicationContext;class AopTest { @Test void test1 () { final AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); final B bean = ac.getBean(B.class); bean.test1(); System.out.println(bean.getClass().getName()); } }
如果没有什么问题的话,调试环境应该已经搭建成功
问题 其实我们在搭建的过程中可能会遇见各种各样的问题 ,下面尝试对这些问题给出解决方案
Github
下载缓慢的问题
其实关于Github的镜像源有很多,这里还是推荐国内的 Gitee ;快是真的快
Spring
源码编译问题