Spring 源码学习-环境准备

简介: Hello,大家好,我是子悠,作为本周的小编之前已经跟大家介绍过自己了,这篇文章就让我们跟着JingQ 的步伐学习 Spring 源码的阅读吧,在正式开始之前,本篇先预热简单介绍一下环境准备。下面是正文

一起来准备阅读 Spring 源码

  • 代码环境准备
  • 设置 Gradle 路径
  • 下载依赖和编译
  • Spring 源码分析大致流程
  • 遇到的坑
  • 无法识别 Gradle 项目
  • gradle 版本和 Idea 版本不匹配
  • 参考资料

代码环境准备

  • JDK 8
  • Gradle
  • 编译工具(常用 IDEA)
  • 源码地址

下载源码到本地


$ git clone git@github.com:spring-projects/spring-framework.git

不建议下载 master 分支的代码,因为有些小问题一直在修复,所以我下载的是 v2.3.0.M2 版本的 releases 代码。

因为我也是一边看书,一边做笔记,下载了源码,写的 demo 代码和注释都在里面,小伙伴们可以下载我上传的代码,亲测可运行~

[码云 Gitee 地址](https://gitee.com/vip-augus/spring-analysis-note.git)

[Github 地址](https://github.com/Vip-Augus/spring-analysis-note)

设置 Gradle 路径

有两种选择:

  • 选择 IDEA 工具中默认(Recommend)
  • 选择用户自己下载的 Gradle (我本地通过 brew 下载)

最后设定:

86.jpg

下载依赖和编译

导入项目后,识别到 Gradle 依赖后,首先会从中央库下载相关的依赖。

下载完依赖后,进行代码编译,通过图形界面,选择根路径下的 build 任务。

87.jpg

最后编译生成 class 等文件路径,在各自模块的 build 目录。

Spring 源码分析大致流程

  • 介绍概念
  • 查看类的集成体系
  • 简单 demo
  • 查看源码
  • 分析流程

遇到的坑

无法识别 Gradle 项目

这个问题是通过 version controll 克隆代码后,打开新项目时一直提示

Could not resolve symbol "XXX" 
# 还有右上角弹出的 
Try resolve again

一开始不知道是哪个导入流程错误,通过查询资料,发现将代码 clone 到本地后,通过下面步骤操作,项目就能正常识别和下载依赖了:

  • 点击 IDEA 的 File -> Open,选择项目的 build.gradle
  • 按照提示设定 Gradle
  • 下载依赖和编译

gradle 版本和 Idea 版本不匹配

本地的 gradle 版本号是 5.4.1

$ gradle -v 
Welcome to Gradle 5.4.1! 

IDEA 工具的版本是 2018.2,查了资料,有可能是高版本 gradle 需要新版本 IDEA,于是我就去下载新版工具。(顺便安利一下新版本的主题 Dark Purple Theme)

89.jpg

更新 IDEA 后,在构建项目时,在最后一步卡住了,提示:


java.lang.AbstractMethodError: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierImpl.getModuleIdentifier()Lorg/gradle/api/artifacts/ModuleIdentifier;

查看资料,大概是 gradle 升级后,出现了 jar 版本兼容的问题,于是按照提示,修改了编译方式(看上面 gradle 选择方式图片),修改完成后,能够正常构建项目。

参考资料

1. 解决IDEA在导入Gradle项目之后报Could not resolve symbol “XXX”错误

2. gradle版本引起编译报错问题:


Cause: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierImpl.getM

3. Gradle 5 IntelJ java.lang.AbstractMethodError


相关文章
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
87 2
|
2月前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
1月前
|
存储 缓存 Java
Spring面试必问:手写Spring IoC 循环依赖底层源码剖析
在Spring框架中,IoC(Inversion of Control,控制反转)是一个核心概念,它允许容器管理对象的生命周期和依赖关系。然而,在实际应用中,我们可能会遇到对象间的循环依赖问题。本文将深入探讨Spring如何解决IoC中的循环依赖问题,并通过手写源码的方式,让你对其底层原理有一个全新的认识。
54 2
|
2月前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
71 9
|
2月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
52 2
|
3月前
|
前端开发 Java 数据库
SpringBoot学习
【10月更文挑战第7天】Spring学习
45 9
|
2月前
|
Java Kotlin 索引
学习Spring框架特性及jiar包下载
Spring 5作为最新版本,更新了JDK基线至8,修订了核心框架,增强了反射和接口功能,支持响应式编程及Kotlin语言,引入了函数式Web框架,并提升了测试功能。Spring框架可在其官网下载,包括文档、jar包和XML Schema文档,适用于Java SE和Java EE项目。
36 0
|
3月前
|
XML Java 数据格式
Spring学习
【10月更文挑战第6天】Spring学习
29 1
|
3月前
|
Java Spring
Spring底层架构源码解析(三)
Spring底层架构源码解析(三)
194 5
|
3月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
116 2