Spring源码01:环境搭建


写在开始:这个系列会陆续更新我学习Spring源码的一些笔记与自己的理解,由于本人水平有限,难免对有些知识理解不到位,亦或者手误导致文中有不正确的地方,欢迎各位指正与探讨。

本文将自己学习源码之前的一些准备工作与环境搭建过程记录于此。

0.版本信息

Idea:2020.1(Mac)+JDK1.8+Gradle-5.6.4+Spring 5.2.x

版本对应很重要,务必相对应

1.源码获取

从Github上拉取源码,clone网速慢的可以自行将Github上的源码导入至自己的Gitee中然后拉取切换分支到5.2.x,这里不做过多赘述。

Github源码地址:[https://github.com/spring-projects/spring-framework]

2.查看导入文档

在拉取的Spring的源码中找到import-into-idea.md文件打开,作者已注明安装的步骤。

Steps:
// 使用gradle对oxm进行编译

  1. Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava
    // 在idea中导入
  2. Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
    // 对spring-aspects模块进行排除
  3. When prompted exclude the spring-aspects module (or after the import via File-> Project Structure -> Modules)
  4. Code away

3.安装Gradle

由于Spring项目不是用maven构建而是用gradle构建的,所以我们先得安装gradle

  1. 查看Spring项目默认支持的gradle版本号

    在项目根目录下:gradle->wrapper->gradle-wrapper.properties打开该文件找到gradle的版本信息

    Spring源码01:环境搭建

    Spring源码01:环境搭建

  2. 下载gradle

    下载地址:[https://services.gradle.org/distributions/]

    找到对应版本,点击下载。

    Spring源码01:环境搭建

  3. 安装gradle
    将下载下来的zip包解压到固定目录下 ,解压后目录结构如下
    Spring源码01:环境搭建

  4. 配置环境变量

    ~/.bash_profile中加入以下变量,添加完成后记得重新加载配置文件(source ~/.bash_profile)

    windows用户可自行查询添加环境变量的方法(和Java配置环境变量类似)

    # gradle
    # GRADLE_HOME=下载后的解压目录
    GRADLE_HOME=/Users/lfh/work/developer/tools/gradle-5.6.4;
    export GRADLE_HOME
    export PATH=$PATH:$GRADLE_HOME/bin
    # GRADLE_USER_HOME:GRADLE的仓库名称(相当于maven仓库),变量名称必须为此,不能改变,目录路径可自定义
    GRADLE_USER_HOME=/Users/lfh/work/developer/tools/gradle_repository
    export GRADLE_USER_HOME
    
  5. 查看版本信息

    使用命令行gradle -version,当看到以下信息就证明配置成功。

    Spring源码01:环境搭建

  6. 修改依赖仓库下载地址

    由于默认仓库在境外下载依赖较慢,所以我们在gradle解压目录下新建init.gradle文件并添加阿里仓库地址,会根据配置的仓库地址以此进行寻找。

    mavenLocal():使用本地maven仓库

    mavenCentral():使用gradle中心仓库

    allprojects {
        repositories {
            mavenLocal()
            maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
            maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
            mavenCentral()
        }
    
        buildscript { 
            repositories { 
                maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
                maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public/' }
                maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
            }
        }
    }
    

4.编译

切换到Spring项目根目录下,使用命令进行编译。编译时间有点漫长,耐心等待。如果出现编译失败的情况,可多尝试几遍。

win下的命令:gradlew :spring-oxm:compileTestJava

mac下的命令:./gradlew :spring-oxm:compileTestJava

编译中:

Spring源码01:环境搭建

编译成功:

Spring源码01:环境搭建

5.导入Idea

File -> New -> Project from Existing Sources -> build.gradle

导入过程依旧漫长,耐心等待……

Spring源码01:环境搭建

Spring源码01:环境搭建

导入成功:

Spring源码01:环境搭建

配置项目:

Spring源码01:环境搭建

6.排除非必要模块spring-aspects

When prompted exclude the spring-aspects module (or after the import via File-> Project Structure -> Modules)

根据官方描述需要排除spring-aspects模块,或者可自行下载导入spring-aspects模块,5.2.x版本的源码已经有spring-aspects模块,可跳过此步骤。别的版本如需排除,可自行查询排除方法。

7.新建模块进行测试

项目右键->new->Moudle

  1. 新建Moudle:spring-demo

Spring源码01:环境搭建

  1. 在build.gradle中添加依赖
dependencies {
    compile(project(":spring-context"))
    compile(project(":spring-beans"))
    compile(project(":spring-core"))
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

Spring源码01:环境搭建

  1. 新建类:src->main->java->HelloWord
public class HelloWorld {

	private String str = "hello,World!";

	public String getStr() {
		return str;
	}
}
  1. 新建配置文件:src->main->resources->spring-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  
	<bean id="helloWorld" class="com.atlfh.HelloWorld"/>
</beans>
  1. 新建测试类:src->test->java->MyBeanTest
	@Test
	public void test(){
		//FileSystemXmlApplicationContext sc = new FileSystemXmlApplicationContext("classpath:spring-config.xml");
		//FileSystemXmlApplicationContext sc = new FileSystemXmlApplicationContext("src/main/resources/spring-config.xml");
		ClassPathXmlApplicationContext sc = new ClassPathXmlApplicationContext("spring-config.xml");
		HelloWorld helloWorld = (HelloWorld)sc.getBean("helloWorld");
		String str = helloWorld.getStr();
		System.out.println(str);
	}
  1. 启动测试成功

Spring源码01:环境搭建

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/282691.html

(0)
上一篇 2022年8月28日
下一篇 2022年8月28日

相关推荐

发表回复

登录后才能评论