# Spring-Framework5.2.x **Repository Path**: yan002/spring-framework5.2.x ## Basic Information - **Project Name**: Spring-Framework5.2.x - **Description**: Spring源码环境搭建仓库 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-04-04 - **Last Updated**: 2022-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一、Spring5.2.x源码环境搭建 搭建Spring5.2.x源码环境,需要安装jdk1.8以上版本,gradele4.2以上版本 工具:IntelliJ IDEA 2019.2.2 ## 1.准备 ### 1.1.安装gradle - 下载 下载地址:https://services.gradle.org/distributions/ 本文采用5.6.4版本:https://services.gradle.org/distributions/gradle-5.6.4-bin.zip - 解压 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111416_09ce82a8_1386013.png "1.png") - 配置环境变量 新增 GRADLE_HOME=D:\Gradle\gradle-5.6.4 ​ PATH中增加 %GRADLE_HOME%/bin; ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111440_b8ec309a_1386013.png "2.png") - 查看版本信息 gradle -v ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111450_d6f05729_1386013.png "3.png") - 配置gradle 在gradle的根目录下的init.d文件夹中新建一个 init.gradle ,添加一下内容(下载加速) ```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配置gradle 打开Idea,File--Settings--Build,Execution,Deployment--Build Tools--Gradle 配置 Gradle user home 为 gradle的环境变量 GRADLE_HOME 目录 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111505_37c9a539_1386013.png "7.png") ## 2.构建 **`说明:下载源码采用git clone方式下载,避免zip包下载在构建时报错`** ![输入图片说明](https://images.gitee.com/uploads/images/2021/0405/120050_283d06d5_1386013.png "11.png") - 修改build.gradle配置 ```gradle repositories { mavenCentral() maven { url "http://maven.aliyun.com/nexus/content/groups/public/" } } ``` ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111514_9b24f1da_1386013.png "6.png") - 构建源码 cmd进入spring源码目录 ,执行 gradlew :spring-oxm:compileTestJava **此命令可能需要等一段时间,可以跳过,直接进行下一步,当然下一步也会耗时一会,因为要下载相关的包** ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111523_124afd4e_1386013.png "13.png") - 导入到Idea File--New--roject from Existing Sources 找到选择spring-framework源码, 选择build.gradle - 修改gradle配置 spring导入到idea后进行构建时,默认会按照gradle中的配置 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111532_b0a2a37e_1386013.png "8.png") 找到 gradle-wrapper.properties,按照配置进行下载 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111541_c420f439_1386013.png "9.png") 不想下载,可以进行修改 选择 Specified location,选择gradle的安装目录,即环境变量 GRADLE_HOME 目录 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111549_0cd8a299_1386013.png "10.png") **修改后,重启IDEA** 重新进行构建,就没有下载gradle的步骤了 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111558_f8dcea83_1386013.png "14.png") ## 3.测试 ### 3.1.新建工程 选中父工程 Spring-Framework,右键,new--Module ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111607_34c2f6d4_1386013.png "15.png") Next,填写ArtifactId,如 spring-mytest ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111615_e14c1f56_1386013.png "16.png") Next,再Finish ### 3.2.修改build.gradle ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111624_ccb2627d_1386013.png "17.png") 加入依赖 spring-context ```gradle plugins { id 'java' } group 'org.springframework' version '5.0.11.BUILD-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile project(':spring-context') testCompile group: 'junit', name: 'junit', version: '4.12' } ``` ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111633_485e54c4_1386013.png "18.png") ### 3.3.编写测试代码 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/111750_fc8aa2bb_1386013.png "19.png") spring.xml ```xml ``` TestConfig.java ```java package com.mytest.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("com.mytest") public class TestConfig { } ``` TestService.java ```java package com.mytest.service; import org.springframework.stereotype.Component; @Component public class TestService { public void testMethod(){ System.out.println("Spring源码搭建成功!!"); } } ``` Test.java ```java package com.mytest.main; import com.mytest.config.TestConfig; import com.mytest.service.TestService; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { //注解方式 AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(TestConfig.class); TestService bean = annotationConfigApplicationContext.getBean(TestService.class);. bean.testMethod(); //配置文件方式 ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("spring.xml"); TestService bean1 = classPathXmlApplicationContext.getBean(TestService.class); bean1.testMethod(); } } ``` 测试运行 ``` 11:04:36: Executing task 'Test.main()'... > Task :buildSrc:compileJava UP-TO-DATE > Task :buildSrc:compileGroovy NO-SOURCE > Task :buildSrc:pluginDescriptors UP-TO-DATE > Task :buildSrc:processResources UP-TO-DATE > Task :buildSrc:classes UP-TO-DATE > Task :buildSrc:jar UP-TO-DATE > Task :buildSrc:assemble UP-TO-DATE > Task :buildSrc:pluginUnderTestMetadata UP-TO-DATE > Task :buildSrc:compileTestJava NO-SOURCE > Task :buildSrc:compileTestGroovy NO-SOURCE > Task :buildSrc:processTestResources NO-SOURCE > Task :buildSrc:testClasses UP-TO-DATE > Task :buildSrc:test NO-SOURCE > Task :buildSrc:validateTaskProperties UP-TO-DATE > Task :buildSrc:check UP-TO-DATE > Task :buildSrc:build UP-TO-DATE > Task :spring-core:cglibRepackJar UP-TO-DATE > Task :spring-core:objenesisRepackJar UP-TO-DATE > Task :spring-expression:processResources UP-TO-DATE > Task :spring-aop:processResources UP-TO-DATE > Task :spring-beans:processResources UP-TO-DATE > Task :spring-core:processResources UP-TO-DATE > Task :spring-context:processResources UP-TO-DATE > Task :spring-mytest:processResources > Task :kotlin-coroutines:compileKotlin UP-TO-DATE > Task :kotlin-coroutines:compileJava NO-SOURCE > Task :kotlin-coroutines:processResources NO-SOURCE > Task :kotlin-coroutines:classes UP-TO-DATE > Task :kotlin-coroutines:inspectClassesForKotlinIC UP-TO-DATE > Task :spring-instrument:compileJava UP-TO-DATE > Task :kotlin-coroutines:jar UP-TO-DATE > Task :spring-instrument:processResources NO-SOURCE > Task :spring-instrument:classes UP-TO-DATE > Task :spring-instrument:jar UP-TO-DATE > Task :spring-jcl:compileJava UP-TO-DATE > Task :spring-jcl:processResources UP-TO-DATE > Task :spring-jcl:classes UP-TO-DATE > Task :spring-jcl:jar UP-TO-DATE > Task :spring-core:compileKotlin UP-TO-DATE > Task :spring-core:compileJava UP-TO-DATE > Task :spring-core:classes UP-TO-DATE > Task :spring-core:inspectClassesForKotlinIC UP-TO-DATE > Task :spring-core:jar UP-TO-DATE > Task :spring-expression:compileKotlin UP-TO-DATE > Task :spring-expression:compileJava UP-TO-DATE > Task :spring-expression:classes UP-TO-DATE > Task :spring-expression:inspectClassesForKotlinIC UP-TO-DATE > Task :spring-expression:jar UP-TO-DATE > Task :spring-beans:compileGroovy UP-TO-DATE > Task :spring-beans:compileKotlin UP-TO-DATE > Task :spring-beans:compileJava NO-SOURCE > Task :spring-beans:classes UP-TO-DATE > Task :spring-beans:inspectClassesForKotlinIC UP-TO-DATE > Task :spring-beans:jar UP-TO-DATE > Task :spring-aop:compileJava UP-TO-DATE > Task :spring-aop:classes UP-TO-DATE > Task :spring-aop:jar UP-TO-DATE > Task :spring-context:compileKotlin UP-TO-DATE > Task :spring-context:compileJava UP-TO-DATE > Task :spring-context:compileGroovy NO-SOURCE > Task :spring-context:classes UP-TO-DATE > Task :spring-context:inspectClassesForKotlinIC UP-TO-DATE > Task :spring-context:jar UP-TO-DATE > Task :spring-mytest:compileJava > Task :spring-mytest:classes > Task :spring-mytest:Test.main() Spring源码搭建成功!! Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/5.6.4/userguide/command_line_interface.html#sec:command_line_warnings BUILD SUCCESSFUL in 5s 36 actionable tasks: 3 executed, 33 up-to-date 11:04:49: Task execution finished 'Test.main()'. ``` 可以看到,正常输出了 Spring源码搭建成功!! 至此,Spring源码环境搭建成功