Spring源码构建

简介: Spring源码构建

环境准备

  • JDK 1.8
  • GRADLE 4.9
  • IDEA 随意,我这里是2020.1.2

下载源码

从github上下载源码, 我这里下载的是spring-framework-5.0.x

下载链接:https://github.com/spring-projects/spring-framework/archive/5.0.x.zip

下载较慢的话建议百度一个github文件加速下载

编译源码

解压

spring源码目录结构.png

  • build.gradle 放了一些依赖配置,有点像maven的pom文件
  • gradle.properties 存放当前Spring的版本,可以对比下看看是不是5.0.X版本
  • gradlew.bat 放的是项目的构建脚本,不过我是使用IDEA去构建
  • import-into-idea.md 这个是Spring导入IDEA的说明文件,可以根据里面的步骤去导入

将项目导入到IDEA

open source.png

选择刚刚解压的目录打开,然后使用gradle方式导入

switch gradle.png

修改IDEA的gradle配置

gradle_config.png

Gradle user home 为存放下载文件的位置

Use Gradle from 选择我们自己刚刚配置好的gradle地址

开始构建

报错:spring-beans:No such property: values for class: org.gradle.api.internal.tasks.DefaultTaskDependency

解决:修改spring-beans项目下的spring-beans.gradle文件

将最后三行替换为:

//compileGroovy.dependsOn = compileGroovy.taskDependencies.values - "compileJava"
//compileKotlin.dependsOn(compileGroovy)
//compileKotlin.classpath += files(compileGroovy.destinationDir)
def deps = compileGroovy.taskDependencies.immutableValues + compileGroovy.taskDependencies.mutableValues
compileGroovy.dependsOn = deps - "compileJava"
compileKotlin.dependsOn(compileGroovy)
compileKotlin.classpath += files(compileGroovy.destinationDir)

重新构建

开始编译

预编译spring-oxmspring-core

pre_compile.png

两个项目都编译完成后,最终编译

finishcompile.png

等待漫长的世界,编译完成,我等了1小时3分钟

测试

这里我选择了DispatcherServletTests类进行测试

test.png

创建自己的模块

createown.png

编辑my-test.gradle文件

description = "My Test"
dependencies {
    compile(project(":spring-context"))
}

修改项目配置

includeown.png

刷新项目,尽情玩耍吧~

目录
相关文章
|
7天前
|
Java API 微服务
【Spring Boot系列】通过OpenAPI规范构建微服务服务接口
【4月更文挑战第5天】通过OpenAPI接口构建Spring Boot服务RestAPI接口
|
1月前
|
XML 缓存 Java
Spring源码之 Bean 的循环依赖
循环依赖是 Spring 中经典问题之一,那么到底什么是循环依赖?简单说就是对象之间相互引用, 如下图所示: 代码层面上很好理解,在 bean 创建过程中 class A 和 class B 又经历了怎样的过程呢? 可以看出形成了一个闭环,如果想解决这个问题,那么在属性填充时要保证不二次创建 A对象 的步骤,也就是必须保证从容器中能够直接获取到 B。 一、复现循环依赖问题 Spring 中默认允许循环依赖的存在,但在 Spring Boot 2.6.x 版本开始默认禁用了循环依赖 1. 基于xml复现循环依赖 定义实体 Bean java复制代码public class A {
|
2月前
|
Java 关系型数据库 数据库连接
Spring源码解析--深入Spring事务原理
本文将带领大家领略Spring事务的风采,Spring事务是我们在日常开发中经常会遇到的,也是各种大小面试中的高频题,希望通过本文,能让大家对Spring事务有个深入的了解,无论开发还是面试,都不会让Spring事务成为拦路虎。
35 1
|
1月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
155 0
|
1月前
|
Java 测试技术 数据库连接
【Spring源码解读!底层原理高级进阶】【下】探寻Spring内部:BeanFactory和ApplicationContext实现原理揭秘✨
【Spring源码解读!底层原理高级进阶】【下】探寻Spring内部:BeanFactory和ApplicationContext实现原理揭秘✨
|
1天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
8天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
24天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
1月前
|
Java Spring
使用spring实现邮件的发送(含测试,源码,注释)
使用spring实现邮件的发送(含测试,源码,注释)
7 0
|
1月前
|
Cloud Native Java 开发者
Spring Boot 4.0:构建云原生Java应用的前沿工具
Spring Boot 4.0:构建云原生Java应用的前沿工具