使用IDEAF分析Spring源码

本文详细介绍了如何从源码编译Spring框架,包括安装Gradle、下载源码、解决常见编译错误及配置IDEA的过程。同时,分享了在Spring项目中创建子模块、添加依赖和配置资源文件的经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境搭建:
安装gradle
git上下载3.2分支源码
进入源码项目目录下执行gradlew :spring-oxm:compileTestJava cleanIdea idea
一定要在项目目录下执行,在模块下执行不可以,会报gradlew 不是内部命令

接着又爆了这个错:
Script ‘F:\spring-framework-3.2.x\spring-oxm\oxm.gradle’ line: 123

  • What went wrong:
    Execution failed for task ‘:spring-oxm:compileTestJava’.

JiBXException in JiBX binding compilation
在这里插入图片描述
按照网上的经验删除了 compileTestJava部分的配置 再次运行gradlew :spring-oxm:compileTestJava cleanIdea idea

在这里插入图片描述
接下来,如果不出意外 ,你应该能看到build success的提示了。紧接着将编译好的源码导入IDEA中,File-> open 选择项目工程目录。

然后,我们可以再spring工程目录下再建一个子模块,写我们自己的代码了。可以利用Maven的骨架,我生成了一个springdemo2,为什么是demo2呢,因为第一次折腾环境失败了…

这是我的代码:

package com.pc.springBeanDemo;

public class MyTestBean {

    private String testStr = "testSTR";

    public String getTestStr() {
        return testStr;
    }

    public void setTestStr(String testStr) {
        this.testStr = testStr;
    }
}
<?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.pc.springBeanDemo.MyTestBean"></bean>
</beans>

引入spring源码模块:

在这里插入图片描述
运行时候可能出现的错误

1、如果没有添加commons-log依赖,报了这个错:Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

需要体检 日志依赖:

commons-logging
commons-logging
1.2

2、如果你还抱了这个错…Exception in thread “main” java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor

还需要添加asm的依赖:

org.springframework
spring-asm
3.0.5.RELEASE

3、如果打包自己的代码后,运行出错,找不到你的spring配置文件,注意看下你的pom文件的中是否引入了

<build>

<!-- 这一段idea自动生成的时候可能没有-->
  <resources>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
      <filtering>true</filtering>
    </resource>
  </resources>

  <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
    <plugins>
      <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.1.0</version>
      </plugin>
      <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.2</version>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.1</version>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.2</version>
      </plugin>
      <plugin>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
      </plugin>
      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>2.8.2</version>
      </plugin>
      <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
      <plugin>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.7.1</version>
      </plugin>
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>3.0.0</version>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

4、无法找到主类App
检查你的IDEA 中run/configuration是否正确。
点击Run —》Edit configurations
在这里插入图片描述

最后 package一下,run一下 看到控制台打印出了结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值