全网最新最详细最明白教程之Spring源码搭建,没有之一,超详细
相关帖子有很多但是都不是最新的Gradle
,我在使用Gradle最新版编译的时候简直坑死我了,弄了好久。接下来给大家详细说一下这个安装过程,以及相关的软件版本号。
相关软件、依赖的版本号:
Gradle
gradle-7.2-bin.zip
该版本官网下载地址 或者自行选择版本 所有版本官网地址注意
:如果要是自行选择版本,以下流程未必适用JDK
jdk-11.0.12_windows-x64_bin.exe
该版本官网下载地址注意
:如果不使用JDK11,会报依赖错误 java: 程序包jdk.jfr不存在,反正JDK8是会报错,本人解决了很长时间都没有解决,有兴趣的话大家自行尝试。Spring源码版本
5.3.x
软件
ideaIU-2021.1.2.exe
相关软件介绍完毕,开始实操:
Spring阅读源码环境搭建
先从GithHub拉取项目,源码地址
https://github.com/spring-projects/spring-framework
如果要是GitHub网络太慢,可以先将代码fork到Gitee上,然后再进行拉取。
首先先登录Gitee,然后点击右上角加号的Import Repository
第一次操作,有可能需要Github和Gitee的权限验证,直接验证即可,出现以下界面:
然后按照下图操作
导入完成后直接去Gitee上拉取代码就行了。这里不在对clone做过多描述,我是使用IDEA进行拉取代码的:
首先先打开gitee的spring源码地址,Copy一下这个地址:如图
打开IDEA,找到Git
,然后点击clone
点击完clone会出现如下界面,填写好复制的源码地址,选好本机存放的源码路径,点击clone
.等待拉去完成。
clone完代码后,发现不是我们想要的版本,我们需要切换一下。注意有可能显示的版本不全,点击一下showmore
即可,
然后按图操作:
切换完成之后,暂时就不用管源码了,先close project 。
接下来安装Gradle
,首先先将软件包解压到你想放的位置。解压完成以后配置Gradle的环境变量
,
打开系统的高级系统设置
,然后修改环境变量
,如图:
在系统变量
中增加两个属性分别是
GRADLE_HOME - 这个是你解压Gradle的路径
GRADLE_USER_HOME - 这个是存放Gradle的依赖包的路径
切记切记且其GRADLE_USER_HOME
的名字不可以改。,不然与默认的配置文件不对应
配置好之后这边,打开Command
,输入
gradle -v
出现如图所示的结果说明配置成功
然后打开Spring源码目录,找到gradlew.bat,打开cmd窗口,执行它。
等待出现如下界面,会出现build success
的提示说明成功,
这还不算完,找到你spring的源码目录,找到这两个文件import-into-eclipse.md
和import-into-idea.md
,这两个文件一个是针对eclipse,一个是针对IDEA的;本次讲解的是IDEA;打开对应的文件,找到step
如图,执行对应的命令
./gradlew :spring-oxm:compileTestJava
windows下需要去掉./
gradlew :spring-oxm:compileTestJava
然后再到执行的gradlew.bat
命令下的目录执行gradlew :spring-oxm:compileTestJava
该命令,也就是spring源码目录。如图:
执行完成后,直到出现BUILD SUCCESSFUL
则代表成功,
进行到这里,就已经离成功不远了。然后使用IDEA重新打开Spring源码项目。
打开方式:File->New->Project from Existing Sources 找到项目中的build.gradle
如图所示:
最后idea会自动编译spring源码,编译成功以后,所有的模块都会有个小小的蓝色图标,表示编译成功,至此spring源码导入完成。接下来写一个测试类,测试一下。
点击项目目录 New->Moudle
选择Gradle JDK11 Java 点击Next: 如图
配置相关属性,项目名、包名、版本号等如图,点击Finish
接下来在新建的项目中的build.gradle
中引入模块:spring-beans
和,如图:
注意:
这里一定要写
implementation
不要写其他的否侧会失败。版本不同,引入方式也不一样,本次的Gradle是7.2。
然后再main中创建一个测试Bean
如图:
然后再resource
中床架一个spring的配置文件 ,将刚刚创建的Bean加载到spring容器中
配置文件的内容
<?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="myTestBean" class="com.vipbbo.spring.MyTestBean"/>
</beans>
接下来再test中创建测试类
测试类的内容如下:
@Test
public void Test(){
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
MyTestBean myTestBean = (MyTestBean) beanFactory.getBean("myTestBean");
System.out.println(myTestBean.getName());
}
点击运行,出现以下结果代表创建完成了。
到这里,spring源码就大功告成了。
感兴趣的小伙伴可以微信搜索
码上遇见你
获取更多精彩内容。
全网最新最详细最明白教程之Spring源码搭建,没有之一,超详细的更多相关文章
- Qt StyleSheet皮肤css源码(黑色,超详细) 乌合之众 good
使用方式如下 //设置皮肤样式 static void SetStyle(const QString &styleName) { QFile file(QString(":/imag ...
- spring源码干货分享-对象创建详细解析(set注入和初始化)
记录并分享一下本人学习spring源码的过程,有什么问题或者补充会持续更新.欢迎大家指正! 环境: spring5.X + idea 建议:学习过程中要开着源码一步一步过 Spring根据BeanDe ...
- ArduinoYun教程之Arduino编程环境搭建
ArduinoYun教程之Arduino编程环境搭建 Arduino编程环境搭建 通常,我们所说的Arduino一般是指我们可以实实在在看到的一块开发板,他可以是Arduino UNO.Arduino ...
- RabbitMQ基础教程之Spring&JavaConfig使用篇
RabbitMQ基础教程之Spring使用篇 相关博文,推荐查看: RabbitMq基础教程之安装与测试 RabbitMq基础教程之基本概念 RabbitMQ基础教程之基本使用篇 RabbitMQ基础 ...
- 手把手教你启用Win10的Linux子系统(超详细)
原文:手把手教你启用Win10的Linux子系统(超详细) 版权声明:转载请保留出处,谢谢! https://blog.csdn.net/zhangdongren/article/details/82 ...
- 16Aspx.com源码2014年7月详细
Web电子商务网(三层)V2.0源码 2014-07-31 [VS2010] 源码介绍: Web电子商务网(三层)V2.0源码 源码描述: 一.源码特点 采用三层架构开发, ...
- 异步编程之co——源码分析
异步编程系列教程: (翻译)异步编程之Promise(1)--初见魅力 异步编程之Promise(2):探究原理 异步编程之Promise(3):拓展进阶 异步编程之Generator(1)--领略魅 ...
- 并发编程之 Condition 源码分析
前言 Condition 是 Lock 的伴侣,至于如何使用,我们之前也写了一些文章来说,例如 使用 ReentrantLock 和 Condition 实现一个阻塞队列,并发编程之 Java 三把锁 ...
- 并发编程之 ThreadLocal 源码剖析
前言 首先看看 JDK 文档的描述: 该类提供了线程局部 (thread-local) 变量.这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局 ...
随机推荐
- SpringBoot博客开发之AOP日志处理
日志处理: 需求分析 日志处理需要记录的是: 请求的URL 访问者IP 调用的方法 传入的参数 返回的内容 上面的内容要求在控制台和日志中输出. 在学习这部分知识的时候,真的感觉收获很多,在之前Spr ...
- 解析ThreadPoolExecutor类是如何保证线程池正确运行的
摘要:对于线程池的核心类ThreadPoolExecutor来说,有哪些重要的属性和内部类为线程池的正确运行提供重要的保障呢? 本文分享自华为云社区<[高并发]通过源码深度解析ThreadPoo ...
- EternalBlue永恒之蓝渗透测试
Eternal Blue(永恒之蓝)-ms17-010渗透测试 第一次做的渗透测试,也是第一次去写博客,还望各位师傅多多指正 :) 工具 1.靶机系统 window7 开放445以及139端口 2.k ...
- vue ele table表格 设置只能勾选一个
table 更改属性设置: <el-table ref="multipleTable" :data="tableData" tooltip-effect= ...
- MySQL——MySQL初始化配置文件
初始化配置文件(影响服务器和客户端程序) 1.MySQL初始化配置加载顺序: 命令行 ----> 初始化配置文件 ----> 预编译选项 2.MySQL初始化配置文件加载顺序: (1)/e ...
- noip模拟45
A. 打表 首先注意这道题数组下标从 \(0\) 开始 可以找规律发现是 \(\displaystyle\frac{\sum |a_i-a _ {ans}|}{2^k}\) 那么严谨证明一下: 由于两 ...
- jvm学习笔记:虚拟机栈
虚拟机栈 Each Java Virtual Machine thread has a private Java Virtual Machine stack, created at the same ...
- Linux上合理设置网卡的MTU值
MTU:是网络的最大传输单元,通信术语:最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位).最大传输单元这个 ...
- 解决git bash闪退问题 报openssl错误
问题描述:今天安装git之后发现Git Bash工具闪退. 于是试了各种办法之后,最后终于解决. 背景描述:git 下载地址:https://git-scm.com/download/win 下载成功 ...
- iOS之多语言开发
前要:iOS多语言开发,可以分为两种 系统设置,通过在手机设置中切换语言,进而改变app中语言: app中手动切换,用户在app中,手动选择语言,进行切换. 一.添加需要的语言 不管使用哪种方法,都需 ...