spring源码解析(一) 环境搭建(各种坑的解决办法)
上次搭建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,重复上述步骤重新导入构建,直接成功!也不知道是什么原因,也不想去纠结了,哈哈,至此,环境构建完毕,接下来是枯燥的源码阅读之旅,希望能够坚持吧
spring源码解析(一) 环境搭建(各种坑的解决办法)的更多相关文章
- Spring源码分析之环境搭建
写在最前面 最近突然心血来潮,想看看源码,看看大牛都怎么码代码,膜拜下.首选肯定是spring大法,于是说干就干,从GitHub上下载spring-framework源码编译拜读. 环境搭建 安装JD ...
- Spring 源码学习之环境搭建
一.下载Spring 源码 进入 https://github.com/spring-projects/spring-framework/tags 选择下载spring freamework的版本 h ...
- Spring源码分析——调试环境搭建(可能是最省事的构建方法)
1. 依赖工具 idea git jdk 1.8 + Gradle 2. 获取源码 从github https://github.com/spring-projects/spring-framewor ...
- Spring源码分析——(001)环境搭建
1.官方参考 spring-framework的github链接:https://github.com/spring-projects/spring-framework 源码环境搭建官方参考1:考如何 ...
- Elasticsearch源码解析:环境搭建
在之前学习Redis的过程中,我就是一边通过文档/视频学习,一边阅读源码.我发现两种方法可以相辅相成,互相补充.阅读文档可以帮助我们快速了解某个功能,阅读源码有助于我们更深入的理解这一功能的实现及思想 ...
- Spring源码解析系列汇总
相信我,你会收藏这篇文章的 本篇文章是这段时间撸出来的Spring源码解析系列文章的汇总,总共包含以下专题.喜欢的同学可以收藏起来以备不时之需 SpringIOC源码解析(上) 本篇文章搭建了IOC源 ...
- Spring源码解析-ioc容器的设计
Spring源码解析-ioc容器的设计 1 IoC容器系列的设计:BeanFactory和ApplicatioContext 在Spring容器中,主要分为两个主要的容器系列,一个是实现BeanFac ...
- Spring源码解析 - AbstractBeanFactory 实现接口与父类分析
我们先来看类图吧: 除了BeanFactory这一支的接口,AbstractBeanFactory主要实现了AliasRegistry和SingletonBeanRegistry接口. 这边主要提供了 ...
- spring 源码解析
1. [文件] spring源码.txt ~ 15B 下载(167) ? 1 springн┤┬вио╬Ш: 2. [文件] spring源码分析之AOP.txt ~ 15KB 下载( ...
随机推荐
- HTML创建访问加密代码
在</head>前面加入即可 普通方式 此方法屏蔽F12查看源码但是屏蔽不了Ctrl+U查看源码 解决方式加密html即可注意!解密比较繁琐切记要记住自己设置的密码 <SCRIPT ...
- day30-注解
Java注解 1.注解的理解 注解(Annotation)也被称为元数据(Metadata),用于修饰解释 包.类.方法.属性.构造器.局部变量等数据信息 和注释一样,注解不影响程序逻辑,但注解可以被 ...
- HBase 安装与配置及常用Shell命令
HBase 安装与配置 首要配置 配置时间同步(所有节点上执行) yum -y install chrony vi /etc/chrony.conf #写入(7版本用server:8版本用pool): ...
- Linux宝塔后台管理地址使用SSL,并部署非443端口的https
上传你的key和pem,然后点设置 点击配置文件 插入代码 1 ssl on; 2 ssl_certificate /xxx/yyy/zzz.pem; 3 ssl_certificate_key /x ...
- 使用mtr来判断网络丢包和网络延迟
转载自:https://mp.weixin.qq.com/s/UsjzMS1_rdxenw0TPlqwyQ 常用的 ping,tracert,nslookup 一般用来判断主机的网络连通性,其实 Li ...
- Prometheus 监控外部 Kubernetes 集群
转载自:https://www.qikqiak.com/post/monitor-external-k8s-on-prometheus/ 在实际环境中很多企业是将 Prometheus 单独部署在集群 ...
- MySQL 的七种日志总结
文章转载自:https://mp.weixin.qq.com/s/ewv7HskHvH3O7kFyOmoqgw 一.MySQL 日志分类 日志类别 说明 备注 错误日志 错误日志记录了当MySQL启动 ...
- 官方使用logstash同步Mysql数据表到ES的摘抄
官方文档地址:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#plugins-inputs-jdbc ...
- td-agent的v2,v3,v4版本区别
官方地址:https://docs.fluentd.org/quickstart/td-agent-v2-vs-v3-vs-v4
- 我的 Kafka 旅程 - 文件存储机制
存储机制 Topic在每个Broker下存储所属的Partition,Partition下由 Index.Log 两类文件组成. 写入 Log 由多个Segment文件组成,每个Segment文件容量 ...