Spring源码01:环境搭建
2022/8/28 14:23:15
本文主要是介绍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进行编译
- Precompile
spring-oxm
with./gradlew :spring-oxm:compileTestJava
// 在idea中导入- Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
// 对spring-aspects模块进行排除- When prompted exclude the
spring-aspects
module (or after the import via File-> Project Structure -> Modules)- Code away
3.安装Gradle
由于Spring项目不是用maven构建而是用gradle构建的,所以我们先得安装gradle
-
查看Spring项目默认支持的gradle版本号
在项目根目录下:gradle->wrapper->gradle-wrapper.properties打开该文件找到gradle的版本信息
-
下载gradle
下载地址:[https://services.gradle.org/distributions/]
找到对应版本,点击下载。
-
安装gradle
将下载下来的zip包解压到固定目录下 ,解压后目录结构如下
-
配置环境变量
在
~/.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
-
查看版本信息
使用命令行
gradle -version
,当看到以下信息就证明配置成功。 -
修改依赖仓库下载地址
由于默认仓库在境外下载依赖较慢,所以我们在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
- 新建Moudle:spring-demo
- 在build.gradle中添加依赖
dependencies { compile(project(":spring-context")) compile(project(":spring-beans")) compile(project(":spring-core")) testCompile group: 'junit', name: 'junit', version: '4.12' }
- 新建类:src->main->java->HelloWord
public class HelloWorld { private String str = "hello,World!"; public String getStr() { return str; } }
- 新建配置文件: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>
- 新建测试类: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); }
- 启动测试成功
这篇关于Spring源码01:环境搭建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25JAVA副业资料:新手入门及初级提升指南
- 2024-11-25Java副业资料:入门到实践的全面指南
- 2024-11-25Springboot应用的多环境打包项目实战
- 2024-11-25SpringBoot应用的生产发布项目实战入门教程
- 2024-11-25Viite多环境配置项目实战:新手入门教程
- 2024-11-25Vite多环境配置项目实战入门教程