Spring 源码解析 | 5.3.x 源码编译

简介: 源码下载首先去 GitHub 上面下载源码。下载地址:github.com/spring-proj…注意如果觉得下载比较慢的话,可以先同步到自己的 gitee 仓库在下载,下面是我 gitee 仓库的地址gitee.com/zhengsh/spr…

源码下载


首先去 GitHub 上面下载源码。下载地址:github.com/spring-proj…注意如果觉得下载比较慢的话,可以先同步到自己的 gitee 仓库在下载,下面是我 gitee 仓库的地址gitee.com/zhengsh/spr…


配置信息


环境信息:


  • idea 2021.2


  • jdk 11


  • gradle-6.9.1


注意:尽量和我的环境信息保持一致,不然可能导致编译失败,或者导入项目的时候出一些奇奇怪怪的问题


导入项目


导入项目过后就是漫长的等待,等待编译,最终加载完成后,如下图所示(其实源码目录根目录下有一个 import-into-idea.md 里面也有导入的说明,大家也可以参照这个执行):


image.png


修改镜像仓库地址


spring源码下载依赖时,默认使用的是spring的仓库,由于网络限制,建议在build.gradle中配置国内的阿里提供的镜像仓库下载


repositories {
  //新增以下2个阿里云镜像
  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" }
  maven { url "https://repo.spring.io/milestone" } // Reactor
  //新增spring插件库
  maven { url "https://repo.spring.io/plugins-release" }
}


预编译 spring-oxm


执行命令 ./gradlew :spring-oxm:compileTestJava


导入项目


idea 选择 file -> open -> 选择源码目录 -> 点击 open


image.png


再次弹出会话框选择 open as project.


image.png


后续就是漫长的等待了, 这个具体的时间要看自己的电脑,以及对于依赖下载的速度了。


测试案例


创建模块


可以创建一个测试模块,  summer-test


image.png


添加依赖


然后在 build.gradle 添加依赖


dependencies {
    compile(project(":spring-core"))
    compile(project(":spring-aop"))
    compile(project(":spring-beans"))
    compile(project(":spring-context"))
}


测试代码


最后添加测试代码


public class BeanTest {
  public static void main(String[] args) {
    AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
    UserService serviceService = applicationContext.getBean(UserService.class);
    System.out.println(serviceService);
  }
}
// AppConfig.java
@Configurable
public class AppConfig {
  @Bean
  private UserService user() {
    return new UserService();
  }
}
// UserService.java
public class UserService {
}


参考信息




相关文章
|
1天前
PandasTA 源码解析(二十三)
PandasTA 源码解析(二十三)
7 0
|
1天前
PandasTA 源码解析(二十二)(3)
PandasTA 源码解析(二十二)
5 0
|
1天前
PandasTA 源码解析(二十二)(2)
PandasTA 源码解析(二十二)
9 2
|
1天前
PandasTA 源码解析(二十二)(1)
PandasTA 源码解析(二十二)
6 0
|
1天前
PandasTA 源码解析(二十一)(4)
PandasTA 源码解析(二十一)
7 1
|
5月前
|
XML Java uml
spring 源码解析——第一篇(ioc xml方式)
spring 源码解析——第一篇(ioc xml方式)
34 0
|
4月前
|
安全 Java 应用服务中间件
阿里技术官架构使用总结:Spring+MyBatis源码+Tomcat架构解析等
分享Java技术文以及学习经验也有一段时间了,实际上作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有一些落后可能就会被淘汰掉,因此我们需要不断去审视自己,通过学习来让自己得到相应的提升。
|
7月前
|
Java 应用服务中间件 Spring
66Spring - 源码解析Spring的启动机制(contextConfigLocation)
66Spring - 源码解析Spring的启动机制(contextConfigLocation)
41 0
|
3月前
|
Java 关系型数据库 数据库连接
Spring源码解析--深入Spring事务原理
本文将带领大家领略Spring事务的风采,Spring事务是我们在日常开发中经常会遇到的,也是各种大小面试中的高频题,希望通过本文,能让大家对Spring事务有个深入的了解,无论开发还是面试,都不会让Spring事务成为拦路虎。
39 1
|
17天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)

推荐镜像

更多