首页 > 编程语言 >Spring源码01:环境搭建

Spring源码01:环境搭建

时间:2022-08-28 10:58:17浏览次数:78  
标签:01 spring gradle maven 源码 Spring GRADLE

写在开始:这个系列会陆续更新我学习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的版本信息

  2. 下载gradle

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

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

  3. 安装gradle
    将下载下来的zip包解压到固定目录下 ,解压后目录结构如下

  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,当看到以下信息就证明配置成功。

  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

编译中:

编译成功:

5.导入Idea

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

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

导入成功:

配置项目:

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

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

  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. 启动测试成功

标签:01,spring,gradle,maven,源码,Spring,GRADLE
From: https://www.cnblogs.com/godot-npe/p/16632354.html

相关文章

  • Spring(二)-生命周期 + 自动装配(xml) +自动装配(注解)
    1、生命周期**Spring容器的bean**的生命周期;1.1默认生命周期1.1.1生命周期调用构造方法,创建实例对象;set方法,给实例对象赋值;init初始化方法初始化对象;(手......
  • NC20185 [JSOI2010]缓存交换
    题目原题地址:[JSOI2010]缓存交换题目编号:NC20185题目类型:堆、贪心时间限制:C/C++1秒,其他语言2秒空间限制:C/C++262144K,其他语言524288K1.题目大意Cache容量以及......
  • VUE 笔试题随笔-01
    vue的8个⽣命周期函数?1.beforeCreated2.created3.beforeMount4.mounted5.beforeUpdate6.updated7.beforeDestory8.destoryedv-show与v-if的区......
  • 《GB27608-2011》PDF下载
    《GB27608-2011联合冲剪机安全要求》PDF下载《GB27608-2011》简介本标准规定了联合冲剪机的一般安全要求、安全防护装置要求、工作危险区安全防护要求;本标准适用于联......
  • 《GB27599-2011》PDF下载
    《GB27599-2011化妆品用二氧化钛》PDF下载《GB27599-2011》简介本标准规定了化妆品用二氧化钛的分类、要求、试验方法、检验规则、标志、标签、包装、运输和贮存;本标......
  • 《GB13511.2-2011》PDF下载
    《GB13511.2-2011配装眼镜第2部分:渐变焦》PDF下载《GB13511.2-2011》简介GB13511的本部分规定了渐变焦配装眼镜的术语和定义、要求、试验方法、渐变焦镜片标记、标识......
  • vue3项目-小兔鲜儿笔记-02-首页模块01
    1.less自动化导入安装一个vue-cli插件,自动导入less文件vueaddstyle-resources-loader2.头部分类导航组件渲染实现头部一级分类和二级分类的渲染基本步骤:定......
  • 《GB28007-2011》PDF下载
    《GB28007-2011儿童家具通用技术条件》PDF下载《GB28007-2011》简介本标准规定了儿童家具的术语和定义、一般要求、安全要求、警示标识、试验方法、检验规则及标志、使......
  • ansible 001 ansible介绍 原理
    ansible自动化运维ansible部署应用程序(在操作系统层面之上)系统初始化过程主机名,yun源,网络,服务,时间同步,内核参数(可以在pxe这里完成)ansible可以方便100多台......
  • Spring中的SPI机制
    前言在面向对象编程领域中,六大原则之一的依赖倒置原则提到的原则规定:高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口;抽象接口不应该依赖于具体实现,而......