Spring源码解析

这篇具有很好参考价值的文章主要介绍了Spring源码解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Idea导入Spring源码

下载

下载gradle

因为Spring源码里没有使用Maven依赖,而是使用gradle依赖,所以我们需要在本地下载安装并配置gradle环境。注意,这里下载安装的gradle版本应与Spring源码中的gradle版本对应。这里推荐下载我的:

链接: https://pan.baidu.com/s/1YVww-x7Furqq3s0KcN27CQ 提取码: 6ai4

下载Spring源码

Spring源码中gradle版本应与自己本地下载的gradle保持一致!这里推荐下载我的:

链接: https://pan.baidu.com/s/186W8TluEc-uOVcKe8Fadbg 提取码: vw8m

安装

解压gradle
  • 1)直接解压gradle到一个目录即完成安装。
  • 2)需要配置环境变量:GRADLE_HOME与Path。
  • 3)验证gradle是否安装成功:gradle -v

这里要注意:本地需要安装JDK8并配置环境变量!

Spring源码解析
Spring源码解析
Spring源码解析
Spring源码解析

解压Spring源码
  • 1)将下载下来的Spring源码压缩包解压到本地某个目录下;

  • 2)切换到自己解压的Spring源码目录下(这里是我的:C:\Users\Administrator\Desktop\myCode\spring源码学习\spring-framework-5.2.6.RELEASE),在目录上单击输入cmd进入终端,执行gradlew :spring-oxm:compileTestJava 命令;

  • 3)执行gradlew :spring-oxm:compileTestJava可能报错,这里下图有解决方案;
    -Spring源码解析
    Spring源码解析
    解决方案:在Spring源码中找到build.gradle文件
    Spring源码解析Spring源码解析

    ## 注释代码
    id 'io.spring.gradle-enterprise-conventions' version '0.0.2'
    ## 修改代码版本号
    mavenBom "com.fasterxml.jackson:jackson-bom:2.10.5"
    mavenBom "io.netty:netty-bom:4.1.39.Final"
    
  • 4)在Spring源码中,找到settings.gradle 文件,添加阿里镜像,下载依赖会快很多!
    Spring源码解析

    ## 添加代码
    maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}
    
  • 5)在Spring源码中,找到build.gradle文件,添加如下代码(保证gradle能正常在idea中被构建!):
    Spring源码解析

    ## 如果idea导入项目依赖有问题 
    ## 报POM relocation to an other version number is not fully supported in Gradle : xml-apis#xml-apis...问题,则添加如下代码即可解决
    configurations.all {
    	resolutionStrategy {
    		force 'xml-apis:xml-apis:1.0.b2'
    	}
    }
    

导入Spring源码

从本地导入项目到idea中

Spring源码解析

Spring源码解析

以工程的形式导入

Spring源码解析

然后等待项目加载依赖即可!

修改idea配置

修改gradle

Spring源码解析

修改编码格式

Spring源码解析

重新加载依赖

Spring源码解析

创建测试项目

前置工作

验证Spring源码环境是否正常

在源码项目中新建一个spring-z-ioc模块(以module的形式创建), 见下图:

Spring源码解析
Spring源码解析
Spring源码解析

Spring源码解析

创建spring-z-ioc成功后,等idea加载完成:

Spring源码解析

创建spring-z-ioc成功后,等idea加载完成:

Spring源码中的settings.gradle文件多了一个子引用
Spring源码解析

在spring-z-ioc的build.gradle文件中添加以下代码(重点):
Spring源码解析

## 添加代码
compile (project(":spring-aop"))
//compile (project(":spring-aspects")) // 这个不要打开 否则会报错
compile (project(":spring-beans"))
compile (project(":spring-context"))
compile (project(":spring-context-indexer"))
compile (project(":spring-context-support"))
compile (project(":spring-core"))
compile (project(":spring-expression"))
compile (project(":spring-instrument"))
compile (project(":spring-jcl"))
compile (project(":spring-jdbc"))
compile (project(":spring-jms"))
compile (project(":spring-messaging"))
compile (project(":spring-orm"))
compile (project(":spring-oxm"))
compile (project(":spring-test"))
compile (project(":spring-tx"))
compile (project(":spring-web"))
compile (project(":spring-webmvc"))
compile (project(":spring-webflux"))
compile (project(":spring-websocket"))

注:Spring-aspect工程里面的类不要去打开,打开后某些类可能会报错,重启一下idea即可恢复正常;

代码测试
package com.kai;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

@Component
class TestService {
	public void testMethod() {
		System.out.println("Spring源码导入测试成功!");
	}
}

@Configuration
@ComponentScan("com.kai")
public class Test {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Test.class);
		TestService testService = context.getBean("testService", TestService.class);
		testService.testMethod();
	}
}

//public class Test {
//	public static void main(String[] args) {
//		System.out.println("111111111");
//	}
//}

Spring源码解析

解决乱码问题
  • 点击 IDEA 顶部菜单栏中的 Help
  • 点击 Edit Custom VM Options
  • 追加 -Dfile.encoding=UTF-8 到文档末尾
  • 重启 IDEA 即可

完结撒花!愿天下的每一位程序员少走弯路,向着朝阳前行!文章来源地址https://www.toymoban.com/news/detail-461490.html

到了这里,关于Spring源码解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android导入其它项目慢,Gradel下载失败,另辟蹊径:使用离线gradle加载,附镜像方式

    最近在开发中需要测试以前写的小项目。结果忘了换本地的gradle,提示下载失败。换了现在用的gradle,项目能跑了。虽然网上有很多很多教程了,但对我的情况也不是都适用。所以自己记录一下。本人水平有限,有不对的地方请帮我指正,万分感谢。 如果您很着急,请直接看

    2024年02月03日
    浏览(33)
  • 【gradle构建spring源码报错io.spring.gradle:propdeps-plugin:0.0.9.RELEASE】

    ide.gradle如下: publish-maven.gradle如下: 仓库中搜索如下图,其中前三个插件都是需要的(只导入idea是否需要eclipse不确定,也可以尝试注释掉报错的缺少eclipse部分): 地址:仓库地址

    2024年02月10日
    浏览(23)
  • Gradle下载spring包出现Received status code 401 from server: Unauthorized

    大家在下载spring家族源码的时候,在进行gradle构建的时候,会出现y: 这个原因是spring从2021.2.21日开始不再支持匿名用户访问 /libs-release 的目录了。 几种解决方法: 如果是 /libs-snapshot 或者 /libs-milestone ,需要修改为 /snapshot 或者 /milestone 。 或者讲repository改为阿里云的仓库地

    2024年02月08日
    浏览(28)
  • 【Spring源码】Spring源码导入Idea

    1.基础环境准备 相关软件、依赖的版本号 Spring源码版本 5.3.x 软件 ideaIU-2021.1.2.exe Gradle gradle-7.2-bin.zip https://services.gradle.org/distributions/gradle-7.2-bin.zip - 网上说要单独下载gradle并配置环境变量,亲测当前5.3.X版本通过gradlew的方式进行管理gradle版本,不需要单独下载 JDK jdk-11.0.12_

    2024年02月08日
    浏览(36)
  • 在Android Studio导入一个项目之后,通常需要下载Gradle的相应版本,但是AS的自动下载很慢,有时候甚至会失败。会出现类似Error:connect time out等错误...

    用Android Studio导入一个项目时,用Gradle构建过程中报错误,估计是下载gradle.zip文件时访问不到,应该是被墙了,网速太慢,下载不了外网资源。错误有如下情况:1、加载过慢2、下载超时3、下载失败 解决方法如下: 1、下载对应的gradle版本 在Project的视图下,找到gradle,里面的

    2024年02月03日
    浏览(62)
  • IDEA 导入 spring 源码

    我们在学习 spring 源码的时候,有时候是需要在阅读源码的时候添加一些代码注释,或者是对源码的一些感悟,如果没有将 spring 的源码导入到 IDEA 中,单纯是通过 Maven 去阅读 jar 的形式是无法添加一些注释信息的,即便可以通过一些比如像 Private Notes 这样的插件做到在源代码

    2024年02月04日
    浏览(24)
  • spring boot 整合EasyPoi导入导出,下载模版功能

    name:Excel中的列名; width:指定列的宽度; needMerge:是否需要纵向合并单元格; format:当属性为时间类型时,设置时间的导出导出格式; desensitizationRule:数据脱敏处理,3_4表示只显示字符串的前3位和后4位,其他为*号; replace:对属性进行替换; suffix:对数据添加后缀。

    2024年02月11日
    浏览(31)
  • 【Mac】编译Spring 源码和Idea导入

    今天我们开始Spring源码的阅读之旅。阅读Spring的源码的第一步当然是编译Spring源码。首先我们要去GitHub上将spring源码给clone下来。 笔者编译环境如下: 根据官网的编译文档可知我们需要的JDK版本 自行配置 根据源码路径 spring-frameworkgradlewrappergradle-wrapper.properties 我们知道当

    2024年02月10日
    浏览(54)
  • 【框架源码】Spring源码解析之BeanDefinition加载流程解析

    观看本文之前,我们先思考一个问题,Spring是如何描述Bean对象的? Spring是根据BeanDefinition来创建Bean对象,BeanDefinition就是Spring中表示Bean定义。BeanDefinition用来存储Bean的相关信息,主要包括:Bean的属性、是否单例、延迟加载、Bean的名称、构造方法等。 简言之就是Spring通过解

    2024年02月09日
    浏览(33)
  • 小程序源码:最新掌上题库微信小程序源码下载,修复登录接口,支持在线考试,自定义导入考题

    这是一款题库微信小程序源码 支持积分商城、自定义试题及导入、知识点分类、模式试题考试、流量主等 首页模块:专项刷题、题型刷题、乱序刷题、我的收藏、我的错题、未作习题、刷知识点、考前必背 另外还有更多功能就不一一说明了 该小程序支持商户收益还有流量主

    2024年02月09日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包