前导:

本次主要是关于“基础环境搭建”的内容,分为三个部分,(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快捷键整理的更多相关文章

  1. 【Spring学习】Spring的源码解析之路

    缘起:=====>>>> 在项目中实际上是用到了Spring的内容,只是直接用的SpringBoot,不管是Eclipse中还是在Intellig IDEA中,应该都比较容易能 ...

  2. 【Spring】Spring IOC原理及源码解析之scope=request、session

    一.容器 1. 容器 抛出一个议点:BeanFactory是IOC容器,而ApplicationContex则是Spring容器. 什么是容器?Collection和Container这两个单词都有存 ...

  3. Spring Boot系列(三):Spring Boot整合Mybatis源码解析

    一.Mybatis回顾 1.MyBatis介绍 Mybatis是一个半ORM框架,它使用简单的 XML 或注解用于配置和原始映射,将接口和Java的POJOs(普通的Java 对象)映射成数据库中的记 ...

  4. Spring Boot @Enable*注解源码解析及自定义@Enable*

      Spring Boot 一个重要的特点就是自动配置,约定大于配置,几乎所有组件使用其本身约定好的默认配置就可以使用,大大减轻配置的麻烦.其实现自动配置一个方式就是使用@Enable*注解,见其名知 ...

  5. 深入学习 esp8266 wifimanager源码解析(打造专属自己的web配网)

    QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 废话少说,本篇博文的目的就是深入学习 WifiManager 这个gi ...

  6. spring cloud深入学习(四)-----eureka源码解析、ribbon解析、声明式调用feign

    基本概念 1.Registe 一一服务注册当eureka Client向Eureka Server注册时,Eureka Client提供自身的元数据,比如IP地址.端口.运行状况指标的Uri.主页地址 ...

  7. Spring中AOP相关源码解析

    前言 在Spring中AOP是我们使用的非常频繁的一个特性.通过AOP我们可以补足一些面向对象编程中不足或难以实现的部分. AOP 前置理论 首先在学习源码之前我们需要了解关于AOP的相关概念如切点切 ...

  8. Spring Boot入门,源码解析

    目录 1.Spring Boot简介 2.微服务 3.Spring Boot HelloWorld 3.1 创建一个Maven工程 3.2 导入依赖Spring Boot相关的依赖 3.3 编写一个主 ...

  9. Spring Security 登录校验 源码解析

    传统情况下,在过滤器中做权限验证,Spring Secuirty也是在Filter中进行权限验证. 创建并注册过滤器 package com.awizdata.edubank.config; impo ...

随机推荐

  1. node-js:文摘

    ES6相关 1.module.exports与exports,export与export default之间的关系和区别 nodejs基础 1.NodeJs安装与全局配置(不建议修改包的全局安装路径, ...

  2. vue 路由别名 路由跳转

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. SA vs NSA

    5G: What is Standalone (SA) vs Non-Standalone (NSA) Networks? According to the recent 3GPP Release 1 ...

  4. java.lang.Long 类源码解读

    总体阅读了Long的源码,基本跟Integer类类似,所以特别全部贴出源码,直接注释进行理解. // final修饰符 public final class Long extends Number i ...

  5. C# 时钟控件

    //控件名:myNewClock //作者:刘典武 //时间:2011-06-10 using System; using System.Collections.Generic; using Syst ...

  6. MJRefresh在Xode6中报错处理

      MJRefresh在Xcode6中会报错,objc_msgSend(self.beginRefreshingTaget, self.beginRefreshingAction, self),简单调 ...

  7. Ubuntu 16.04.3 LTS 安装 MongoDB

    1.安装Ubuntu16.04 运行sudo apt-get install mongodb安装Mongodb 如果没有MongoDB库,则运行sudo apt-get update更新库. 2.运行 ...

  8. SQLite3问题

    使用包含SQL语句的txt文件建立数据表 使用sqlite自带官方工具,.read <sql语法文件> 导入csv中数据到sqlite数据库表 使用sqlite自带官方工具,.import ...

  9. C6.cpp

    可以将 一个array对象赋给另一个对象 对于下标值出现负数的情况下可以解释为在头指针的位置处向前移动对应的字节 可以使用vector.at(n_elem)来获取元素等价于vector[n_elem] ...

  10. centos7下安装Go环境

    下载go cd /home mkdir app cd app wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz ta ...