使用idea和gradle编译spring5.1源码 + 使用已编译的spring源码构建spring项目

写在最前面,最近想学习spring,但是又不想只看看博客文档,这样只会知其然而不知其所以然,一些原理的东西即使当时知道了,但很快也会忘掉。所以我决定下载源码,通过写代码+debug,有利于我对spring工作本质有更深入的理解。我这人记忆力不太好,俗话好记性不如烂笔头,我决定记录下来供自己温故,也希望可以帮助一些遇到同样问题的人。

工具版本:spring5.1.5,gradle5.1,jdk1.8_131,IntelliJ IDEA 2018-3

 

文章前半部分是编译Spring5 源码遇到的问题总结,后半部分是使用编译的源码构建一个spring项目的小Demo

1. 编译器版本问题

下载源码导入idea后先build,等build完毕准备跑spring-core test发现右键list中怎么也找不到Run ‘all test’选项,经过一番周折才发现是导入的project竟然没有被idea 识别成module(如下图),那自然就没有Run ‘all test’选项了。

解决办法:因为我用的idea版本是IC (社区版),换成IU(企业版) 即可

 

2. 缺失jar包问题

解决办法:在spring-framework目录下执行 gradle objenesisRepackJar 和 gradle cglibRepackJar 命令即可在Spring-framework\spring-core\build\libs目录下生成jar包

剩下依次编译spring-core,spring-oxm,spring-context,spring-beans即可,期间会遇到一些case失败了,但我觉的应该不影响我们的使用。

注意:在编译spring-oxm时,也遇到丢失jar包问题。解决办法同#2一样。在spring-oxm目录下执行gradle genCastorgradle genJaxb 生成castor和jaxb jar文件:

 

最后贴上我的编译结果:

前半部分结束!

后半部分就是如何基于已经编译的spring代码构建一个项目Demo

步骤:

1. 选中project右键 --> New--> Module

2. 在打开的框左侧栏中选中Gradle,再选中右边的Additional Libraries and Frameworks下的Java,最后next

3. 输入ArtifactId,选中next

4. 确认信息,选中finish

至此,可以看到project 下出现新建的Module

5. 编辑Module下的 build.gradle 引入对应的依赖 (Demo中只用到了Spring 注入,所以只需要引入spring-context依赖即可)

6. 在java目录下创建对用的包和类,目录结构如下:

代码如下:

package com.test.app;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.test")
public class Appconfig {
}
package com.test.dao;

import org.springframework.stereotype.Repository;

@Repository
public class TestDao {

	public void query(){
		System.out.println("Hello Spring!");
	}
}
package com.test.main;

import com.test.app.Appconfig;
import com.test.dao.TestDao;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(Appconfig.class);
		TestDao testDao = annotationConfigApplicationContext.getBean(TestDao.class);
		testDao.query();

	}
}

7. 最后,执行 Main.java ,可从控制台执行结果:

 

至此,spring5.1项目编译以及构建项目已完成,希望对大家有所帮助,谢谢!

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值