Spring源码阅读环境搭建
2020-12-13 03:16
标签:toc JetBrains master dea 项目 enc 技术 选择 build 目录 本文将粗略的搭建一个Spring源码的阅读环境,为后面的源码阅读做一个准备。做任何事情不管是有一个完美的或者是不太完美的开头,只要去做了,那么就是一种胜利。 由于spring使用了gradle构建工具,接下来先安装gradle。 从Gradle官网下载gradle安装包,打开https://gradle.org/releases/ 将下载的安装包gradle-x.x.x-all.zip解压到当前目录 环境变量配置 配置GRADLE_HOME 配置Path 打开目录行工具,输入 Spring在github上的仓库地址是:https://github.com/spring-projects/spring-framework,本文不会直接去github上去下载源码,网速实在太慢。本文使用的码云上Spring仓库的镜像,该镜像每日同步一次,地址是https://gitee.com/mirrors/Spring-Framework 从git导入项目 填写要克隆的git仓库信息,可以点击右边的【Test】按钮测试,等待仓库克隆完成 打开导入的Spring项目 构建完成后报错如下(只列出了一部分): spring未了避免与cglib和objenesis冲突,将cglib和objenesis相关的包重新repack到 解决办法如下: 为了方便编写测试spring的代码,在spring-framework单独新建一个模块my-test 右键spring-framework项目->New->Module... 输入ArtifactId: my-test 添加依赖: 为了能让my-test自动导入相关的依赖,在Gradle面板中右键spring节点 在my-test模块中编写程序测试 创建 在resources目录下新建 新建 运行 至此整个环境算是搭建好了 Spring源码阅读环境搭建 标签:toc JetBrains master dea 项目 enc 技术 选择 build 原文地址:https://www.cnblogs.com/zhangfengxian/p/11072500.html
安装gradle
gradle -v
,能看到gradle的版本信息表示安装已经成功导入Spring源码
注意:
.gradle
目录,对于Administrator
用户,对应的目录是C:\Users\Administrator\.gradle
。该目录占用的空间一般比较多,所以在这里将这个目录放到其他的盘中。...
Error:(63, 30) java: cannot find symbol
symbol: class Signature
location: class org.springframework.cglib.core.KeyFactory
...
location: class org.springframework.cglib.proxy.Enhancer
Error:(152, 30) java: cannot find symbol
...
org.springframework.cglib
和org.springframework.objenesis
包中,这部分的代码没有包含到源码当中。构建之前,可以通过添加Gradle任务来解决,见:https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md#known-issues和https://youtrack.jetbrains.com/issue/IDEA-160605
创建测试模块my-test
api(project(":spring-context"))
MyApplication
package com.zfx;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyApplication {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
Hello hello = (Hello)ac.getBean("hello");
hello.sayHello();
}
}
applicationContext.xml
Hello
类package com.zfx;
public class Hello {
public void sayHello() {
System.out.println("Hello, zhangfengxian");
}
}
MyApplication
,可以看到控制台输出:Hello, zhangfengxian
本文思维导图