上次搭建spring源码的环境还是两年前,依稀记得那时候也是一顿折腾,奈何当时没有记录,导致两年后的今天把坑重踩了一遍,还遇到了新的坑,真是欲哭无泪;为了以后类似的事情不再发生,这次写下这篇博文来必坑;

  一、源码下载

  github直接搜索即可.地址已拼好并直接定位到我此次用到的5.2版本:https://github.com/spring-projects/spring-framework/tree/5.2.x,为了后续看源码写注释方便,这里直接下载的zip包

  二、gradle下载

  spring源码用的项目构建工具是gradle而不是maven,这里直接写必坑策略,就不掩饰错误了,据说spring5.2.x版本搭载的gradle版本不能低于5.6不能高于5.7,本人亲测过gradle的3.2,5.1和7.0版本都不构建失败,最后使用5.6.4版本成功构建,关于这块之前也百度过,也瞄到过说更改spring源码中gradle的版本的,由于我没有实际操作,此处略去不管,最后,gradle下载地址:https://services.gradle.org/distributions/ 选择对应-all版本下载即可;下载完成后别忘了配置环境变量

  三 导入idea

1.import project选择解压后的源码目录

2.如图示选择后点击next

3.如图示选择gradle的安装目录,点击finish等待gradle构建项目,此过程较长,我第一次导入大概花了近20分钟

  

  如果按照上面提供的源码和gradle版本导入构建的话大概率不会有什么问题了,万一有其他问题多半是gradle版本的问题了,百度一搬都能解决

  四、新建自己的测试module

  1.选中项目右键new-module,如图

直接next,自定义一下artifactid后一直无脑下一步即可,此时只需等待gradle去构建这个测试模块,构建完后目录齐全,如图:

为方便阅读和debug源码,需要写一个测试类来复现spring容器创建bean的过程,关键代码如下:

/**
* @Author dll
* @create 2021/4/23 15:02
* @describe
*/
public class Test01 { public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("test.xml");
Object aaa = ac.getBean("aaa");
System.out.println(aaa);
} }

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="aaa" class="com.dll.beans.AAA">
<property name="name" value="董琳琳"></property>
</bean>
</beans>

接下来按道理就能直接能运行main方法了,但是我出现了一个无解的报错:Error:Kotlin: warnings found and -Werror specified;尴尬的是这个报错竟然百度不到,于是猜测是Kotlin版本问题,结果换了版本号还是不行,百度折腾半天灵光一现,将idea从2018.3.3换成2019.2.3,重复上述步骤重新导入构建,直接成功!也不知道是什么原因,也不想去纠结了,哈哈,至此,环境构建完毕,接下来是枯燥的源码阅读之旅,希望能够坚持吧

最新文章

  1. .NET面试题系列[4] - C# 基础知识(2)
  2. iOS中坐标转换
  3. VS2013_QT255开发相关技巧理解心得
  4. 超全!iOS 面试题汇总
  5. 转-CSS3 圆角(border-radius)
  6. $watch 和 $apply
  7. DepthClipEnable error
  8. 简单的cocos2d-x手势(转)
  9. A + B Problem II---hdu1002
  10. cct软件测试
  11. POJ 2155 Matrix (D区段树)
  12. iOS 错误 之 Potential leak of an object stored into &#39;cs&#39;
  13. 自动化利器-Zabbix
  14. 201521123118《java与程序设计》第14周学习总结
  15. Echarts数据可视化visualMap,开发全解+完美注释
  16. 截取所有的winform runtime error
  17. SAP MM 物料主数据MRP2 视图Rounding Value字段
  18. 老猪带你玩转android自定义控件二——自定义索引栏listview
  19. 小甲鱼-013元组tuple:上了枷锁的列表
  20. 使用C# 开始第一个QQ机器人

热门文章

  1. 快速搭建 SpringCloud Alibaba Nacos 配置中心!
  2. 【UML分析、建模与设计】我在工作时遇到UML
  3. pod(一):Kubernetes(k8s)创建pod的两种方式
  4. SQL语句中过滤条件放在on和where子句中的区别和联系
  5. typora收费了,最后一个免费版提供下载
  6. Centos7.6内核升级
  7. 迁移阿里云上的ECS操作说明
  8. Gitlab备份以及恢复
  9. 基于python的RSA解密算法
  10. 「国产系统」Tubian 0.2,兼容Windows和Android的GNU/Linux系统!