目录

  • 一. 下载源码
  • 二. gradle
    • 1. gradle 下载
    • 2. 环境变量的配置
      • 配置 GRADLE_HOME
      • 配置 GRADLE_USER_HOME
  • 三. Spring源码的配置文件修改
    • settings.gradle 文件
    • build.gradle 文件
  • 四. Spring源码的预编译
  • 五. Spring源码导入Idea
    • 1. 导入步骤
    • 2. 关闭spring-aspects项目
    • 3. Idea配置geadle
  • 六. 模拟测试

想要研究Spring源码,那必须知道如何下载并导入IDEA。 文本记录自己在Windows操作系统下导入源码的过程,避免大家走弯路

一. 下载源码

spring-framework源码是发布在github上的
Github源码下载地址: https://github.com/spring-projects/spring-framework

二. gradle

1. gradle 下载

首先需要gradle的版本, 在spring源码中的目录gradle -> wrapper -> gradle-wrapper.properties文件中可以看到当前源码对应的gradle版本

gradle下载地址

2. 环境变量的配置

配置 GRADLE_HOME



测试一下gradle环境变量是否配置成功, 打开cmd, 输入gradle -v命令,出现以下界面,表示配置成功

配置 GRADLE_USER_HOME


三. Spring源码的配置文件修改

在将Spring源码导入Idea时, 为了加快gradle下载依赖包的效率, 在以下配置文件中添加配置

settings.gradle 文件

maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}

build.gradle 文件

四. Spring源码的预编译

在Spring源码的目录上,有两个文件,import-into-eclipse.md 和import-into-idea.md 。因为是需要导入Idea开发工具中,所以就可以依照import-into-idea.md文件指示的步骤完成源码导入

从这个文件描述可知,在源码导入Idea之前,打开cmd,进入到源码的目录中, 先执行gradlew :spring-oxm:compileTestJava,
完成预编译

五. Spring源码导入Idea

参见导入Idea手册: import-into-idea.md

1. 导入步骤

Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
刚开始时,源码项目会去下载gradle所需要的jar包, 由于之前配置了阿里云,所以下载的效率大大提高

2. 关闭spring-aspects项目

When prompted exclude the spring-aspects module (or after the import via File-> Project Structure -> Modules)
右击项目名, 然后选择ignore Gradle Project选项来暂时屏蔽spring-aspects项目

3. Idea配置geadle


配置好之后,再次build源码项目. 下面是成功的界面

在import-into-idea.md导入手册中有下面这一句话:
spring-core and spring-oxm should be pre-compiled due to repackaged dependencies.
所以按照顺序依次build

六. 模拟测试

  1. 在源码项目中新建一个属于自己的测试模块, new -> module ->下面截图

    模块新建成功的项目目录

  2. 在项目的build.gradle中添加依赖项

  3. 举例测试:

@Component
public class UserService {public void user(){System.out.println("user..........");}
}@Configuration
@ComponentScan("com.maker.aop")
public class SpringTest {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringTest.class);UserService userService = context.getBean("userService", UserService.class);userService.user();}
}

运行结果:

《Spring》第一篇 IDEA导入Spring源码相关推荐

  1. LightSun/android-databinding(第一篇属性绑定)源码剖析与思考

    自从谷歌推出DataBinding框架之后,MVVM开发模式也在android的端慢慢的兴起,用DataBinding框架可以省去UI和数据绑定的不少功夫,通俗的讲就是少写很多代码,并且结构看起来清晰 ...

  2. 手撸Spring系列12:MyBatis(源码篇)

    说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正. ...

  3. Spring Boot 2.x 启动全过程源码分析(上)入口类剖析

    转载自   Spring Boot 2.x 启动全过程源码分析(上)入口类剖析 Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boo ...

  4. Spring Boot Dubbo 应用启停源码分析

    作者:张乎兴 来源:Dubbo官方博客 背景介绍 Dubbo Spring Boot 工程致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发.同时也整合了 Spring Boo ...

  5. Spring Boot 2.x 启动全过程源码分析(全)

    上篇<Spring Boot 2.x 启动全过程源码分析(一)入口类剖析>我们分析了 Spring Boot 入口类 SpringApplication 的源码,并知道了其构造原理,这篇我 ...

  6. 【java】本地客户端内嵌浏览器3 - Swing 使用 Spring 框架 + 打包项目 + 转exe + 源码

    目录 ★☆★ 写在前面 ★☆★ ★☆★ 本系列文章 ★☆★ ★☆★ 开源网址 ★☆★ 一.给 Swing 加上 Spring 0.前期努力 I. SpringBoot II. SpringMVC 1. ...

  7. java中batch基础_详解Spring batch 入门学习教程(附源码)

    详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...

  8. spring MVC cors跨域实现源码解析

    spring MVC cors跨域实现源码解析 名词解释:跨域资源共享(Cross-Origin Resource Sharing) 简单说就是只要协议.IP.http方法任意一个不同就是跨域. sp ...

  9. 黑马上新Spring全套教程(含实战源码)

    "八股在手,offer全有",为了通过面试,你有背过"八股文"吗? 教程推荐:黑马程序员新版Spring零基础入门到精通,一套搞定spring全套视频教程(含实 ...

最新文章

  1. Android架构篇-2 国际化多语言
  2. php mysql两个表合并_php – 我可以将两个MySQL查询合并为一个吗?
  3. pil numpy转换二值图
  4. Struts2中的拦截器与过滤器学习
  5. 数据调度组件:基于Azkaban协调时序任务执行
  6. 计算机技术在农机上的应用,计算机视觉技术在农机自动化上的应用与优势分析.pdf...
  7. 一个做法是给一个解决方案一个ComDLL的目录
  8. 雷曼java_java入门(2)--数据类型
  9. Ajax请求URL后加随机数原理
  10. 调用微信接口方法说明--JS-SDK
  11. 【2022考石开正攵★氵台】思维导图
  12. 凝思系统常用操作命令
  13. 解决Android7.0严苛模式问题
  14. 基于VS2015MFC在X86debug编译平台调试opengl 代码出现oxc0000007b错误的解决方法
  15. 今天给大家分享用scratch的画笔绘制彩色花瓣!
  16. java日期的计算(当月剩余天数、获取日期当月的天数)
  17. 分享一组漂亮的html5后台登陆模板
  18. celery异步——生产者消费者
  19. 无法获得计算机管理权限,技巧:Windows系统如何获得管理员权限?
  20. 如何制作运营高质量的竞价单页

热门文章

  1. 精通HTML 第二章 使用适当的标签完成任务 阅读笔记
  2. 高压放大器在柔性材料测试中的应用
  3. 【云原生之kubernetes实战】在k8s集群下部署Weave Scope监控平台
  4. 几种数组初始化的方式
  5. VScode使用gitlab
  6. Cartographer源码阅读(1):程序入口
  7. 简单算法--闰平年问题
  8. NAACL 2019 字词表示学习分析
  9. 基于arduino的ESP32 学习笔记(二) TFT_eSPI和LVGL库使用笔记
  10. 如何搭建神经网络模型,构建神经网络模型方法