【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 ...
随机推荐
- localStorage溢出问题
项目使用的store.js库 store.js库不能管理localStorage中的过期项到时清除,只能在再次调用get的时候才做处理,如果一直不调用get,过期了也还是占用着空间.溢出后,再储存项目 ...
- 大数据学习之路(1)Hadoop生态体系结构
Hadoop的核心是HDFS和MapReduce,hadoop2.0还包括YARN. Hadoop1.x的生态系统: Hadoop2.x引入YARN: HDFS(Hadoop分布式文件系统)源自于Go ...
- JAVA除法保留小数点后两位的两种方法
1.(double) (Math.round(sd3*10000)/10000.0); 这样为保持4位 (double) (Math.round(sd3*100)/100.0); 这样为保持2位 ...
- c#+CAD动态移动效果
public class MoveRotateScaleJig : DrawJig { public static List<Entity> entities = new List< ...
- 记一次深度系统安装至windows系统盘提示挂载为只读模式问题
记一次深度系统安装至windows系统盘提示挂载为只读模式问题 来到新公司新电脑自己要安装deepin,安装的时候没考虑双系统直接装至默认win系统盘,导致deepin启动后提示如下: 提示多个挂载分 ...
- Scaffold-DbContext 命令参数
NAME Scaffold-DbContext SYNOPSIS Scaffolds a DbContext and entity types for a database. SYNTAX Scaff ...
- JAVA正则表达式匹配,替换,查找,切割(转)
import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...
- Android 开发 获取设备信息与App信息
设备信息 设备ID(DeviceId) 获取办法 android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager ...
- Spark的转化和行动(transformations和action)
//********************** 装换操作 ********************* 1.def map[U: ClassTag](f: T => U): RDD[U] 将 ...
- 在下载SOPC代码的过程中遇到的一些错误
(1)Error (209015): Can't configure device. Expected JTAG ID code 0x02D120DD for device 2, but found ...