【spring源码系列】之【环境搭建】

摘要:
介绍spring上下文、junit和logback依赖项&lt/maven.compiler.target>4.11<弹簧上下文<版本>${弹簧版本}</版本>依赖性>ch.qos.logback<logback经典<版本>

1. gradle安装

1.1 下载gradle

gradle官网下载对应的版本,笔者用的6.0.1,下载地址如下https://gradle.org/releases/,找到6.0.1,选择complete连接下载,如下图
【spring源码系列】之【环境搭建】第1张

1.2 配置环境变量

解压gradle到指定目录,配置环境变量GRADLE_HOME、Path,与JDK类似,如下图
【spring源码系列】之【环境搭建】第2张
【spring源码系列】之【环境搭建】第3张
在命令行输入gradle -v,出现如下信息表示安装成功!
【spring源码系列】之【环境搭建】第4张

2. 准备spring源码工程

因为pom文件自动下载的源码不能在里面写注释,准备源码是后续方便在源码里写注释。

2.1 下载源码

源码下载地址为:https://github.com/spring-projects/spring-framework,
笔者版本为5.2.3.RELEASE,因githup下载速度慢,一是可以FQ下载,二是通过码云克隆镜像,再从码云下载,操作如下:
step1: 登录码云账户,点击右上角+号,新建仓库;
【spring源码系列】之【环境搭建】第5张
step2: 将spring的githup地址复制到导入已有仓库,并创建;
【spring源码系列】之【环境搭建】第6张
step3:从码云下载刚刚创建的克隆镜像,注意选择对应版本;
【spring源码系列】之【环境搭建】第7张
上述step3也可以通过命令行下载git clone -b v5.2.3.RELEASE https://gitee.com/wzj2006/spring-framework.git
速度非常快!
【spring源码系列】之【环境搭建】第8张

2.2 源码编译

2.2.1 项目导入IDEA

【spring源码系列】之【环境搭建】第9张

2.2.2 安装kotlin插件,并重启IDEA

【spring源码系列】之【环境搭建】第10张

2.2.3 IDEA配置gradle

【spring源码系列】之【环境搭建】第11张

2.2.4 编译spring

在编译前修改build.gradle文件中的仓库,优先选择阿里云,如下

repositories {
  maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
  maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
  mavenCentral()
  maven { url "https://repo.spring.io/libs-spring-framework-build" }
}

在项目的根目录下执行gradlew :spring-oxm:compileTestJava,如下图所示,表示编译成功,第一次执行需要几分钟,再执行会较快。
【spring源码系列】之【环境搭建】第12张

3. 准备示例项目工程

step1:创建spring-app项目,IDEA创建maven项目如下图
【spring源码系列】之【环境搭建】第13张
step2: 引入spring-context、junit、logback依赖

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <spring.version>5.2.3.RELEASE</spring.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>LATEST</version>
    </dependency>

step3: 分别创建SpringHello类、配置文件spring.xml、测试类TestSpring;
【spring源码系列】之【环境搭建】第14张
【spring源码系列】之【环境搭建】第15张
【spring源码系列】之【环境搭建】第16张

step4: 运行测试类结果如下:
【spring源码系列】之【环境搭建】第17张

4. 源码写注释

maven自动下载的jar包无法在里面写注解,需要将自动下载 jar包替换为源码工程打的jar包,分为以下几步:
step1: 在spring-context的包上右键,选择Open Library Settings;
【spring源码系列】之【环境搭建】第18张
setp2: 分别加入先前下载的编译后的源码工程的jar包与源文件,如下图:
【spring源码系列】之【环境搭建】第19张
【spring源码系列】之【环境搭建】第20张
【spring源码系列】之【环境搭建】第21张
把原来非源码工程中的两个文件删除。
【spring源码系列】之【环境搭建】第22张
step5: 调试示例项目工程中中的TestSpring,进入源码,发现可以写注释了,如下图:
【spring源码系列】之【环境搭建】第23张

接下来会发现一个有趣的现象,写完注释后,再次debug进入后,进不了断点了,原因是java源文件与class文件不一致了,所以每次写完注释后要重新打包源码源码工程中的模块。
step6: 重新编译打包,在gradle中找到相应模块,tasks下面的build,双击jar即可。
【spring源码系列】之【环境搭建】第24张

5. 总结

本篇主要讲述了环境相关的准备工作,通过一张思维导图总结如下:
【spring源码系列】之【环境搭建】第25张
后续将通过连载方式一步一步揭开spring的面纱。

免责声明:文章转载自《【spring源码系列】之【环境搭建】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker中使用Nginx反向代理配置说明升级了 Windows 11 正式版,有坑吗?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

从微信SDK看ProtoBuffer文件的生成

前言 Protocol Buffers (下面简称PB)是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。它支持多种语言,比如C++,Java,C#,Python,JavaScript等等。目前它的最新版本是3.0.0。与...

不错的TOMCAT监控好工具probe

Tomcat版本:6.0.41 Probe版本:2.3.3 一,Tomcat没有默认用户账号,故首先需要添加Tomcat用户账号 修改$CATALINA_HOME/conf/tomcat-users.xml: <tomcat-users> <!-- 用户角色 --> <role rolename="manager"/>...

oracle正则表达式函数 匹配

文章介绍了关于oracle正则函数的一些用法,包括匹配等,Oracle10g提供了在查询中使用正则表达的功能,它是通过各种支持正则表达式的函数在where子句中实现的。 ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SU...

jdk/java版本与Android源码编译中的错误

错误一:javap未指向有效的java版本 Traceback (most recent call last): File "../../base/android/jni_generator/jni_generator.py", line 1065, in <module> sys.exit(main(sys.argv)) Fi...

cmd wevtutil 读取远程日志错误,Error:在没有配置的 DNS 服务器响应之后,名称 Server23.localdomain 的名称解析超时。

想要根据xml文件筛选器读取远程主机最新的几条日志,结果老是提示: Error : wevtutil qe SystemQuery.xml /f:text /rd:true /c:3 /sq:true /r:\******* /u:*********administrator /p:************       看我之前的文章:Windows提...

Jmeter+ant+Jenkins实现接口自动化平台及报告发送

项目中实现了比较方便的自动化体系,一直没时间总结一下,现抽空整理一番,废话不多说  内容如下: 一、环境准备  jmeter : 编写接口脚本,实现接口测试 ant  :静默执行jmeter脚本,并生成测试报告 jenkins  :集成接口测试到项目流程,实现定时运行及接口测试报告邮件发送 ------以上准备工作可以百度自行安装,工具安装环境无依赖,把环...