【Spring源码】Spring源码导入Idea

news2024/11/27 14:02:36

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_windows-x64_bin.exe
    • https://www.oracle.com/java/technologies/downloads/
    • 网上推荐用11版本,当前用的是8版本,暂时没有发现问题

2.Spring阅读源码环境搭建

(1).GithHub拉取项目

源码地址

https://github.com/spring-projects/spring-framework
//或者
https://gitee.com/mirrors/Spring-Framework

在这里插入图片描述

(2).gradle安装

1.打开Spring源码目录,找到gradlew.bat,打开cmd窗口,执行它,会自动下载对应的gradle版本
在这里插入图片描述

(3).预编译 spring-oxm

打开spring的源码目录,找到这两个文件import-into-eclipse.md 和import-into-idea.md,这两个文件一个是针对eclipse,一个是针对IDEA的;本次讲解的是IDEA;打开对应的文件,找到step如图,执行对应的命令

./gradlew :spring-oxm:compileTestJava

windows下需要去掉./
gradlew :spring-oxm:compileTestJava

执行完成后,直到出现BUILD SUCCESSFUL则代表成功
在这里插入图片描述

(4).官方教程

在这里插入图片描述

3.Spring 源码导入Idea

(1).IDEA打开源码

IDEA打开方式:File->New->Project from Existing Sources 找到项目中的build.gradle如图所示:
在这里插入图片描述
在这里插入图片描述
最后idea会自动编译spring源码,编译成功以后,所有的模块都会有个小小的蓝色图标,表示编译成功
在这里插入图片描述

(2).排除spring-aspects模块

spring-aspects有自己的编译器,会影响jvm的加载,所以要移除
在这里插入图片描述

在这里插入图片描述

(3).编写测试类

1.点击项目目录 New->Moudle
在这里插入图片描述
2.选择Gradle JDK11 Java 点击Next: 如图
在这里插入图片描述
3.配置相关属性,项目名、包名、版本号等如图,点击Finish
在这里插入图片描述
4.接下来在新建的项目中的build.gradle中引入模块:spring-beans和,如图:
在这里插入图片描述

    implementation project (":spring-beans")
    implementation 'junit:junit:4.13.1'

5.然后再main中创建一个测试Bean
在这里插入图片描述

package com.demo.spring;
public class MyTestBean {
	private String name = "chuangjianbean";

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

6.然后再resource中床架一个spring的配置文件 ,将刚刚创建的Bean加载到spring容器中
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="myTestBean" class="com.vipbbo.spring.MyTestBean"/>
</beans>

7.接下来再test中创建测试类
在这里插入图片描述

import com.demo.spring.MyTestBean;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class MyTest {
	@Test
	public void Test() {
		BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
		MyTestBean myTestBean = (MyTestBean) beanFactory.getBean("myTestBean");
		System.out.println(myTestBean.getName());
	}
}

8.点击运行,出现以下结果代表创建完成了。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/620717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚函数详解及应用场景

目录 概述1. 虚函数概述2. 虚函数的声明与重写3. 析构函数与虚函数的关系4. 虚函数的应用场景4.1. 多态性4.2. 接口定义与实现分离4.3. 运行时类型识别4.4. 多级继承与虚函数覆盖 结论 概述 虚函数是C中一种实现多态性的重要机制&#xff0c;它允许在基类中声明一个函数为虚函…

PDCCH monitoring capability

欢迎关注同名微信公众号“modem协议笔记”。 前段时间看search space set group (SSSG) switching相关内容时&#xff0c;注意到R17和R16的描述由于PDCCH monitoring capability的变化&#xff0c;内容有些不一样。于是就顺带看了下R16 R17PDCCH monitoring capability的内容。…

Domino 14.0早期测试版本

大家好&#xff0c;才是真的好。 本篇是超级图片篇&#xff0c;图片多&#xff0c;内容丰富&#xff0c;流量党请勿手残。 前天我们说到Engageug2023正在如火如荼进行&#xff0c;主题是“The Future is Now”。 因为时差的关系&#xff0c;实际上在写这篇公众号时&#xff…

设计模式(七):结构型之适配器模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 设计模式…

Java --- springboot3之web内容协商原理

一、内容协商原理 HttpMessageConverter 定制 HttpMessageConverter 来实现多端内容协商 编写WebMvcConfigurer提供的configureMessageConverters底层&#xff0c;修改底层的MessageConverter ResponseBody由HttpMessageConverter处理 标注了ResponseBody的返回值 将会由支持它…

蹭个高考热度,中国人民大学与加拿大女王大学金融硕士项目给你更多的选择

今日各大平台热搜都被“高考”霸屏&#xff0c;朋友圈里到处都是高考的祝福。期待莘莘学子都将交上满意的答卷&#xff0c;考出理想的未来。针对职场上的我们而言高考已是过去时&#xff0c;但知识的力量却是无穷的&#xff0c;在职的我们依然可以向上生长&#xff0c;中国人民…

FreeRTOS_任务相关API函数

目录 1. 任务创建和删除 API 函数 1.1 函数 xTaskCreate() 1.2 函数 xTaskCreateStatic() 1.3 函数 xTaskCreateRestricted() 1.4 函数 vTaskDelete() 2. 任务创建和删除实验&#xff08;动态方法&#xff09; 2.1 实验程序与分析 3. 任务创建和删除实验&#xff08;静…

ZC-CLS381RGB颜色识别——配置寄存器组(上)

文章目录 前言一、ZC-CLS381RGB简介二、配置寄存器组1.主控寄存器2.检测速率寄存器2.增益寄存器2.颜色数据寄存器 三、状态转移图和信号波形图绘制总结 前言 在现代工业生产中&#xff0c;颜色识别技术已经成为了一个非常重要的技术。颜色识别可以用于产品质量检测、物料分类、…

特瑞仕|常见电子元器件的故障现象及原因详解

​电子元器件是现代电子设备中不可或缺的组成部分&#xff0c;但在长时间的使用过程中&#xff0c;它们也可能会出现各种故障现象。本文将详细介绍一些常见电子元器件的故障现象及原因&#xff0c;以帮助读者更好地理解和处理这些问题。 一、电阻器 故障现象&#xff1a;电阻值…

湖南人的商业策略:用“副产品免费”的模式,推动主产品消费

湖南人的商业策略&#xff1a;用“副产品免费”的模式&#xff0c;推动主产品消费 什么是副产品免费模式&#xff1f;(主产品要钱&#xff0c;副产品不要钱) 免费商业模型设计的核心就是通过延长产业链&#xff0c;以此来达到利润链条的延伸&#xff0c;在这个过程中衍生和挖掘…

1.8 掌握Scala函数

一、声明函数 &#xff08;一&#xff09;显式声明函数 案例演示 &#xff08;1&#xff09;加法函数 package net.huawei.day08import scala.io.StdIn/*** 功能&#xff1a;显式声明函数* 作者&#xff1a;* 日期&#xff1a;2023年03月20日*/ object Example01 {def add1…

测试用例设计方法之因果图详解

一、因果图概述 因果图是从需求中找出因&#xff08;输入条件&#xff09;和果&#xff08;输出或程序状态的改变&#xff09;&#xff0c;通过分析输入条件之间的关系&#xff08;组合关系、约束关系等&#xff09;及输入和输出之间的关系绘制出因果图&#xff0c;再转化成判…

composer-创建自己的依赖库

1.环境 码云账号(或者GitHub)码云地址composer 官方仓库账号 Packagist composer官方仓库安装composer 2.步骤 2.1 发行composer的依赖包是需要从git 或者svn里拉取的,所以得先在码云里创建一个仓库 2.2 依赖包中必须有composer.json配置标明名字依赖等信息,配置大概如下,配…

Vue基础第五篇

一、动态组件 1.基本使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>动态组件</title><script src"https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></sc…

华为安全专家带你入门安全多方计算

安全多方计算 从0到1 6月8日&#xff08;本周四&#xff09; 19:00—21:00&#xff0c;华为安全专家带你入门安全多方计算&#xff0c;欢迎参加&#xff01; 考虑以下应用场景&#xff1a; Alice认为她可能患有某种遗传病&#xff0c;Bob有一个包含DNA模式与各类疾病的数据库。…

Hive执行计划之hive依赖及权限查询和常见使用场景

文章目录 概述1.explain dependency的查询与使用2.借助explain dependency解决一些常见问题2.1.识别看似等价的SQL代码实际上是不等价的&#xff1a;2.2 通过explain dependency验证将过滤条件在不同位置的查询区别 3.查看SQL操作涉及到的相关权限信息 概述 Hive查看执行计划的…

RocketMQ-Request-Reply特性

源码版本号:版本号:4.9.4 使用场景 随着服务规模的扩大&#xff0c;单机服务无法满足性能和容量的要求&#xff0c;此时需要将服务拆分为更小粒度的服务或者部署多个服务实例构成集群来提供服务。在分布式场景下&#xff0c;RPC是最常用的联机调用的方式。 在构建分布式应用…

高考季,17岁VS人工智能,谁的作文更胜一筹?

又到一年高考日。想起十二年前我也曾和众多莘莘学子一样,在这场人生的史诗里挣扎奋斗。 那时的我满怀着期待和焦虑,站在人生的岔口,茫然纠结该循哪条道路。十二年光阴荏苒,岁月如梭, 如今我已不复当年学子的面容,更无法回首当时的迷茫与彷徨。 时过境迁,我如今以另一种身份再…

flask+scrapy

管道数据库 class SpiderBookPipeline:def __init__(self):host localhostuser rootpassword hdp020820db 警察大学信息检索self.conn pymysql.connect(hosthost, useruser, passwordpassword, dbdb)self.cursor self.conn.cursor()def process_item(self, item, spider…

【Python】Python系列教程-- Python3 元组(十三)

文章目录 前言访问元组修改元组删除元组元组运算符元组索引&#xff0c;截取元组内置函数关于元组是不可变的 前言 往期回顾&#xff1a; Python系列教程–Python3介绍&#xff08;一&#xff09;Python系列教程–Python3 环境搭建&#xff08;二&#xff09;Python系列教程–…