在IDEA中搭建Spring5.2.x版本源码(~附带完整过程和图示~)

1.开发环境


  • JDK8
  • IntelliJ IDEA 2019.1.4
  • gradle 5.6.4
  • git 2.33.0

2.操作步骤


下载并安装git

获取Spring源码

  • 使用clone的方式将源码拉取到本地,方便使用IDEA直接比较版本间的差异

    • 新建一个文件夹SpringFrameWork
    • 在该文件夹下打开git bash,输入以下命令:
    git clone https://github.com/spring-projects/spring-framework.git
    
    • 完成克隆后,在命令行输入:
     git checkout origin/5.2.x
    
  • 也可直接下载源码的压缩包

    在这里插入图片描述

    • 点击code中的Download ZIP
添加阿里云镜像

  • 找到源码目录下的build.gradle文件

在这里插入图片描述

  • 向文件中的repositories节点下添加以下镜像:
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
预编译spring-oxm模块

  • 在源码目录下下打开cmd命令窗口
  • 执行以下命令:
gradlew :spring-oxm:compileTestJava
  • 完成spring-oxm模块的编译后,会在源码目录生成.gradle文件夹

在这里插入图片描述

下载并安装gradle

在这里插入图片描述

  • 记得配置环境变量:

    • 新增 GRADLE_HOME 环境变量,指向gradle-5.6.4-bin.zip解压目录
    • 在Path环境变量新增 %GRADLE_HOME%\bin
  • 在cmd中输入以下命令gradle -v检查是否安装成功

为Gradle配置镜像

  • 进入gradle-5.6.4-bin.zip解压后的目录,在init.d目录下新建init.gradle文件
  • 添加以下内容:
allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
        all { ArtifactRepository repo ->
            def url = repo.url.toString()
            if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) {
                project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .'
                remove repo
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}
将代码导入到IDEA中

  • 选择IDEA的Import Project

  • 选择导入Gradle项目(先确保在IDEA中已经开启Gradle插件,要不然下图不会显示Gradle)

在这里插入图片描述

  • 在导入前进行配置

在这里插入图片描述

  • 点击Finish,等待IDEA构建完项目

  • 将分支切换到5.2.x

在这里插入图片描述

构建整个项目

  • 在IDEA中选择Build->Build Project(本机在构建过程很顺利,但是在测试时还是报了关于AspectJ的错误,所以还是要进行下面的步骤)

在这里插入图片描述

  • 下载并安装aspectj

    • aspectj-1.9.5.jar所在的文件夹打开cmd命令行,运行java -jar aspectj-1.9.4.jar
    • 在安装界面中点击Next(注意自定义aspectj-1.9.5.jar安装的路径并选择JDK所在的路径)
  • IDEA中配置aspectj

    • 确保插件Spring AOP/@AspectJAspectJ Support已被激活

    在这里插入图片描述

    • 将编译器改为Ajc

    在这里插入图片描述

    • 指定需要使用Ajc编译的项目

      在这里插入图片描述

      在这里插入图片描述

  • 再次选择Build->Build Project

3.测试


创建模块

在这里插入图片描述

在这里插入图片描述

添加必要的依赖

在这里插入图片描述

compile(project(":spring-context"))
compile(project(":spring-beans"))
compile(project(":spring-core"))
compile(project(":spring-aop"))
optional("org.aspectj:aspectjweaver")
编写测试代码

// 下面代码都是自定义模块中的
// 实体类User
public class User {
	private Integer id;
	private String userName;
    // 下面就是setter、getter、toString和构造器,此处省略
}

// 注解的方式声明bean
@Configuration
@Component
public class JavaConfig {
	@Bean
	public User user(){
		return new User(1, "psj");
	}
}

// 测试类
public class Test {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
		User user = (User) context.getBean("user");
		System.out.println(user.toString());  // 可以成功输出就OK了!!!
	}
}

4.参考


https://daimingzhi.blog.csdn.net/article/details/107101967

https://www.bilibili.com/video/BV1w94y197DT/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值