Dive into Spring framework -- 搭建spring 源码的开发环境
spring是一个类之间依赖的管理容器,大家都知道,但我们中很多人都仅仅停留在使用的层面,但spring本身具有极大的研究价值,所以在使用了几年spring之后,还是想深入的探究一下其根源。记录于此,愿与各位共享。
spring有很多功能模块,从spring的官网doc 我们可以看到其分了29个部分,当然主要内容是从chapter 5 IoC开始的。现在来说明一下接下来要各个部分,我们要分析的内容。对于每个大的模块,我们会深入分析各个模块的源码,深入理解这些实现方式,并通过scala来实现一个山寨的框架,用Scala是不想直接抄袭,可以说是照葫芦画瓢。刚刚说了,spring是个大集成,她不仅仅有设计良好的各个模块用以支撑各类之间的dependences,并且有支持很多其他框架的接口模块,这个对我们来说是额外的收获,所以在后面的各个模块中,其他的那些第三方框架,咱也不会落掉任何一个,理解他们我们可以更加深入的理解spring是如何包容第三方框架。尤为可喜的是spring在尽力支持第三方框架的最新版本。能坚持下去,咱还是能有点收获的。
spring的开放源码在GitHub上,别跟外国人客气,尽情的去把他们的优秀的成果down下来。这里要特别说明一下如何将spring源码导入到Eclipse。
现在spring把源码各个模块里面的pom文件都删除了,我们就不能直接用maven来导入了,pity! 他们现在使用gradle来管理项目。
第一步是搭建你的gradle环境:
Eclipse的gradle插件的update site: http://dist.springsource.com/release/TOOLS/gradle,只需要选择“extensions / gradle integration”. 通过Eclipse --> Help --> Install New Software... 来安装。耐心的安装上plugin之后,去下源码,git clone https://github.com/spring-projects/spring-framework.git
download完成后,先别急导入到Eclipse,看看github项目里面说的,配置prerequisites:需要git和jdk8(Git and OpenJDK 8 early access build 100 or later
),请注意那里面的提示:一定要把JAVA_HOME指向jdk1.8.0.
接下来进入源码路径, 运行import-into-eclipse.sh(linux/Mac).这一步你就照着提示做下去就可以了。比较苦逼的是能否一次性把所有依赖包都下下来,如果不能一次性得到最终的complete提示,你就多试几次吧。我就碰到好几次运行到中途就卡住了,一直在build一个模块,实际上就是在下载对应jar依赖包。于是我就取消(ctrl+c),再重新运行,用了一个晚上终于成功看到了最后complete的提示。
设置Eclipse的jdk环境变量,这里就不多说了,但是将默认的选择成jdk1.8.0.
现在可以导入到Eclipse了,在workspace里面import-->Gradle --> Gradle project, 选择你的spring源码路径,会有提示说要build model,那就build吧。
build完成后,把run before 和run after两个选项去掉,finish!
一切都成功的话,你会看到各个模块都是有包结构的,否则就会有很多编译错误。 Wish you good luck!
如果有什么问题,尽情留言,咱怎么的也能解决掉,你说呢?
转载请注明出处。
Dive into Spring framework -- 搭建spring 源码的开发环境的更多相关文章
- GEF入门实例_总结_01_教程、源码、开发环境准备
一.前言 最近在学Eclipse插件开发,发现了一个比较好的GEF入门教程,并且按照教程上的操作,一步步实现了一个入门Demo,在此感谢作者的贡献. 好记性不如烂笔头,故决定总结一下这段时间的学习心得 ...
- 基于Ubuntu系统搭建以太坊go-ethereum源码的开发环境
第一.先安装geth的CLI环境sudo apt-get install geth,这个很重要 第二.下载源代码 git clone https://github.com/ethereum/go-et ...
- 在eclipse中配置spark 0.9.1源码的开发环境
一.准备工作: 1.下载release版spark 0.9.1,本次用的版本是spark-0.9.1-bin-cdh4. 2.下载scala IDE 3.0.2,这个版本ide的支持scala 2.1 ...
- Centos7 下Boost 1.61.0源码 配置开发环境
1 下载地址 https://sourceforge.net/projects/boost/files/boost/1.61.0/ boost_1_61_0.tar.gz 2 卸载系统自带的boost ...
- Spring Cloud 学习 之 Spring Cloud Eureka(源码分析)
Spring Cloud 学习 之 Spring Cloud Eureka(源码分析) Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 ...
- Spring框架之AOP源码完全解析
Spring框架之AOP源码完全解析 Spring可以说是Java企业开发里最重要的技术.Spring两大核心IOC(Inversion of Control控制反转)和AOP(Aspect Orie ...
- Spring框架之jdbc源码完全解析
Spring框架之jdbc源码完全解析 Spring JDBC抽象框架所带来的价值将在以下几个方面得以体现: 1.指定数据库连接参数 2.打开数据库连接 3.声明SQL语句 4.预编译并执行SQL语句 ...
- 【Spring】Spring IOC原理及源码解析之scope=request、session
一.容器 1. 容器 抛出一个议点:BeanFactory是IOC容器,而ApplicationContex则是Spring容器. 什么是容器?Collection和Container这两个单词都有存 ...
- spring boot 2.0 源码分析(一)
在学习spring boot 2.0源码之前,我们先利用spring initializr快速地创建一个基本的简单的示例: 1.先从创建示例中的main函数开始读起: package com.exam ...
随机推荐
- 【JVM】线上应用故障排查
高CPU占用 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障. 通过ps aux ...
- my first ai application
正式下手之前,先跑个demo体验以下. 1.my first ai application https://sonnguyen.ws/first-ai-application/ https://git ...
- 《闪存问题之PROGRAM DISTURB》总结
来自 http://www.ssdfans.com/?p=1814 SSD之所以需要BCH或LDPC等ECC纠错算法,是因为闪存中的数据会在神不知鬼不觉的情况下发生比特翻转. 导致比特翻转的原因很多, ...
- HDU2425:Hiking Trip(简单bfs,优先队列实现)
题目: 传送门 题意很简单就不解释了,水题一道. #include <iostream> #include <string.h> #include <stdio.h> ...
- JUnit之参数化测试、套件/成组测试的使用
原文地址http://blog.csdn.net/yqj2065/article/details/39967065 参数化测试 正如数组替代int a0,a1,a2一样,测试加法时assertEqua ...
- windows 2003 iis php
我的环境 是 windows server200 ee iis6.0 程序是php 1.一台安装好的 Windows 2003 服务器,并且已经安装了 IIS 6. 2.下载 windows ...
- ruby中的链式访问和方法嵌套
先看一道题,这道题是codewars上的一道题,我很早就看到了,但是不会写.等到又看到这道题的时候,我刚看完元编程那本书,觉得是可以搞定它的时候了.废话不多说,先看这道题,题目最开始是为JavaScr ...
- Winter-2-STL-F Ananagrams 解题报告及测试数据
Time Limit:3000MS Memory Limit:0KB Description Most crossword puzzle fans are used to anagrams- ...
- jxl.jar包,应该把它放在哪个文件下
①把鼠标放到自己的工程上右键 ②点击Properties or Build Path >> Configure Build Path, 然后弹出一个窗口,click AddExternal ...
- Druid学习之路 (三)Druid的数据源和段
作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9703204.html 转载请注明出处 Druid的数据源和分段 Druid的数据存储在"Da ...