【Spring学习】Spring的源码解析之路 ——【step1】基础环境配置 + IDEA快捷键整理
前导:
本次主要是关于“基础环境搭建”的内容,分为三个部分,(1)查看源码和项目需要的开发集成环境Intellig IDEA的使用,(2)如何导入源码,(3)在这个过程中梳理出的快捷键
正文:======》》》》
一、查看源码和项目的开发集成环境的使用
1、 下载:
从Spring官网直接下载Spring-framwork的源码:https://spring.io/projects/spring-framework,点击右上角的github图标,进入:https://github.com/spring-projects/spring-framework,解压下载的zip包到工程目录下;(我比较多会直接从最新版本入手)
想要下载某个版本的包的话,可以通过github的地址页面点击这里:
点击之后到下个页面的这里:
点击左边的菜单选择:Artifact
之后按照路径org/ springframework/spring就能找到多个版本:
之后点击Download即可
另外也可以直接通过增加版本号的方式:
https://github.com/spring-projects/spring-framework/archive/v5.0.2.RELEASE.zip
2、 IDEA工具的下载直接搜索就会很多,工具问题不在这里详述
二、导入源码过程
通过IDEA中的File-New Project From Sources,之后选择解压的源码目录,之后会出现这个页面,直接选择推荐使用的Use default gradle wrapper即可,否则自己选择的Gradle可能出现版本兼容问题
之后经过漫长等待,完成之后就可以看到源码啦
备注:如果导入的工程如果后面出现了点击Ctrl+鼠标左键点击某个类或者方法跳转不过去的话,可以关闭IDEA,之后打开工程的时候,不能用open,而应该是import project
三、Intellig IDEA的快捷键(限目前本人过程中会用到的,后续快捷键会跟着项目中用到的不断)
在具体看源码的过程中,结合IDEA中的菜单中的显示也清楚了记录了很多快捷键,并且处理了一些冲突情况,具体记录如下:
(1)查找:CTRL+shift+F(全局查找),CTRL+F(在当前页面查找)
(2)生成类图:先查找之后,Ctrl+Alt+Shift+U,生成类图,或者可能提示是选择:选择生成类图,还是模块依赖图,选择类图即可
(3)通过类图中的接口显示Implementations;或者查看抽象类的实现,快捷键是:Ctrl+Alt+B(Ctrl+点击可以进入方法或者类,如果是接口的话,就需要通过Ctrl+Alt+B查看实现,点击进入具体的某个实现中)
(4)在一个接口或者类的文件中,看所有的类方法,Ctrl+F12
(5)打开setting设置窗口 —— 菜单:File-Settings;快捷键是:Ctrl+alt+S
(6)查看前进和返回 —— 通过Ctrl+鼠标点击到某个类上,可以跟进去(作用同快捷键:Ctrl+Alt+向右箭头,但是这个快捷键是必须得有过点击进去的操作返回之后再向右才可以),想要返回上一级的话,就通过Ctrl+Alt+向左箭头(然后使用这个快捷键时,发现跟其他的快捷键是冲突的,会导致屏幕旋转,具体关闭快捷键的文档地址在这里:https://jingyan.baidu.com/article/fec4bce27e421cf2618d8bc5.html)
(7)查看常量的值或者查看document的,通过ctrl+q
后续:=====》》》》
到了目前为止,整个源码可以看到,基础快捷键的使用也OK了,接下来看源码的过程中可以通过画类图和查看方法等方式不断熟悉源码本身,下面在源码类图会梳理出UML中各种线条含义的内容;下面会先自己创建一个SpringMVC的项目,然后结合项目中涉及内容跟进源码
【Spring学习】Spring的源码解析之路 ——【step1】基础环境配置 + IDEA快捷键整理的更多相关文章
- 【Spring学习】Spring的源码解析之路
缘起:=====>>>> 在项目中实际上是用到了Spring的内容,只是直接用的SpringBoot,不管是Eclipse中还是在Intellig IDEA中,应该都比较容易能 ...
- 【Spring】Spring IOC原理及源码解析之scope=request、session
一.容器 1. 容器 抛出一个议点:BeanFactory是IOC容器,而ApplicationContex则是Spring容器. 什么是容器?Collection和Container这两个单词都有存 ...
- Spring Boot系列(三):Spring Boot整合Mybatis源码解析
一.Mybatis回顾 1.MyBatis介绍 Mybatis是一个半ORM框架,它使用简单的 XML 或注解用于配置和原始映射,将接口和Java的POJOs(普通的Java 对象)映射成数据库中的记 ...
- Spring Boot @Enable*注解源码解析及自定义@Enable*
Spring Boot 一个重要的特点就是自动配置,约定大于配置,几乎所有组件使用其本身约定好的默认配置就可以使用,大大减轻配置的麻烦.其实现自动配置一个方式就是使用@Enable*注解,见其名知 ...
- 深入学习 esp8266 wifimanager源码解析(打造专属自己的web配网)
QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 废话少说,本篇博文的目的就是深入学习 WifiManager 这个gi ...
- spring cloud深入学习(四)-----eureka源码解析、ribbon解析、声明式调用feign
基本概念 1.Registe 一一服务注册当eureka Client向Eureka Server注册时,Eureka Client提供自身的元数据,比如IP地址.端口.运行状况指标的Uri.主页地址 ...
- Spring中AOP相关源码解析
前言 在Spring中AOP是我们使用的非常频繁的一个特性.通过AOP我们可以补足一些面向对象编程中不足或难以实现的部分. AOP 前置理论 首先在学习源码之前我们需要了解关于AOP的相关概念如切点切 ...
- Spring Boot入门,源码解析
目录 1.Spring Boot简介 2.微服务 3.Spring Boot HelloWorld 3.1 创建一个Maven工程 3.2 导入依赖Spring Boot相关的依赖 3.3 编写一个主 ...
- Spring Security 登录校验 源码解析
传统情况下,在过滤器中做权限验证,Spring Secuirty也是在Filter中进行权限验证. 创建并注册过滤器 package com.awizdata.edubank.config; impo ...
随机推荐
- Google SketchUp Cookbook: (Chapter 2) Following Paths with Follow Me
软件环境 SketchUp Pro 2018 参考书籍 Google SketchUp Cookbook Follow Me工具 Follow Me工具,将2D图形沿着一条路径挤出生成3D物体. 使用 ...
- react-native shadow失效
做边框阴影,但是有时候会失效,内容产生阴影,而边框无效,今天发现了原因,没错,就是没有设置背景颜色导致的.如图
- PostgreSQL模式(schema)介绍
一个PostgreSQL数据库集群包含一个或多个已命名数据库.用户和用户组在整个集群范围内是共享的,但是其它数据并不共享.任何与服务器连接的客户都只能访问那个在连接请求里声明的数据库. 注意: 集群中 ...
- 新的blog站地址
自己用Jekyll搭建了一个静态blog网站 以后的blog随笔就更新在:https:/blog.hudunsec.cn
- 内核驱动程序中如何读写user space的文件,方便调试程序
需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.但是在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() f ...
- JS sort() 方法
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序.要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较. array.s ...
- python大法好——Python 正则表达式
Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. r ...
- Django 中的JsonResponse 和 json区别
from django.http import JsonResponse JsonResponse 里面代码会加这一个响应头 kwargs.setdefault('content_type', 'ap ...
- element-ui:el-table时间格式化
如果想对表格某一列的内容格式化,可用 formatter 属性.属性绑定格式化的方法即可 <el-table-column prop="update_time" label= ...
- The type initializer for System.Data.SqlClient.SqlConnection threw an exception
The type initializer for System.Data.SqlClient.SqlConnection threw an exception net framwork啥原因 xp电脑