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 下载( ...
随机推荐
- Linux KVM创建虚拟机
原博文(https://www.cnblogs.com/supermao12/p/16382767.html) 开启虚拟化 KVM需要64位操作系统 [root@localhost 4.18.0-19 ...
- 虚拟机里做LUN映射(RHEL系统和centos系统皆可)(Linux版)
紧接着Windows的LUN映射之后 参考 (https://www.cnblogs.com/zhengyan6/p/16121268.html) 先删除部分配置(没有做之前的LUN映射则不用) 进网 ...
- Linux虚拟机破解密码步骤
Linux破解密码 重启系统 到达logo界面快速 按 e 编辑当前条目 将光标移至以 linux 开头的行,此为内核命令行 在UTF-8(RHEL7):ro(RHEL8)后添加 rd.break ( ...
- 一文带你体验MRS HetuEngine如何实现跨源跨域分析
摘要: HetuEngine作为MRS服务中交互式分析&多源统一SQL引擎,亲自全程体验其如何实现多数据源的跨源跨域分析能力. 本文分享自华为云社区<MRS HetuEngine体验跨源 ...
- kafka的auto.offset.reset详解与测试
1. 取值及定义 auto.offset.reset有以下三个可选值: latest (默认) earliest none 三者均有共同定义: 对于同一个消费者组,若已有提交的offset,则从提交的 ...
- ProxySQL(8):SQL语句的重写规则
文章转载自: https://www.cnblogs.com/f-ck-need-u/p/9309760.html 为什么要重写SQL语句 ProxySQL在收到前端发送来的SQL语句后,可以根据已定 ...
- ProxySQL(6):管理后端节点
文章转载自:https://www.cnblogs.com/f-ck-need-u/p/9286922.html 配置后端节点前的说明 为了让ProxySQL能够找到后端的MySQL节点,需要将后端的 ...
- owncloud安装部署手册
Dockerhub地址:https://hub.docker.com/r/owncloud/server docker pull owncloud/server:10.9.0 docker run - ...
- 苹果手机安装郑好办手机app后给绿城通公交卡充值的步骤
1.苹果手机,需要带有NFC功能 苹果XS手机该功能默认是开启的,不用额外的其他操作 苹果11该功能需要设置开启才行.步骤:设置--通用--NFC,然后开启 2,公交卡 如下这种的公交卡可以充值: 如 ...
- linux修改mysql的默认端口
本文是基于centos7的环境进行编写,如果是其他linux系统命令可能不一样,根据 1.首先我们查看mysql的默认端口 我们登录mysql到mysql查看mysql使用的端口 show globa ...