由于此次编译的是spring-framework-5.0.x,jdk版本最低需要1.8
1. gradle下载地址:https://services.gradle.org/distributions/
截止到目前,gradle最新版本为5.6.1了。gradle下载时候有三个包,gradle-src为gralde源码,gradle-bin为安装包,gradle-all为源码加安装包,我这里下载的是gradle-all
我刚开始直接下载的最新版本的,结果到后面编译的时候,报错了,提示有个什么东西1.8
,还是什么1.0.2.be
什么鬼的版本问题,然后我就换成4.10了,就没有报哪个错误了。
gradle下载后不需要安装,解压在本地磁盘后配置环境变量即可。
2. 配置环境变量:
新建GRADLE_HOME
,path中增加%GRADLE_HOME%/bin;
即可。
配置完成以后win+r,输入cmd进入dos界面,键入命令gradle -v,若如下图正确输出版本信息即可
这个查看版本的命令是不是跟maven很像??这俩其实功能差不多。
然后配置gradle默认的本地仓库,可做如下配置,新增GRADLE_USER_HOME
,路径配置成需要的本地仓库路径即可,我这里配置为:E:\Gradle\LocalRepository
。
AspectJ的安装让我折腾了半天,由于我的eclipse是4.11版本的,https://www.eclipse.org/ajdt/downloads/
找了一下,最新的版本只有适合eclipse4.10版本的,上面提示说插件适合的版本需要和Eclipse的版本一致才可以生效,然后就试着装了一下,好像确实没有生效。当然如果没有安装的话,在最后导入项目的时候,会提示缺少这两个工具,直接在marketPlace里面可以看到Groovy,直接点Install
按钮即可,但是另外的AspectJ Development Tools
,这个玩意却没有Install
按钮可以点,只有一个learnMore
,在折腾半天之后,那我就点learnMore看看吧,进去里面之后竟然有个Install,点了之后貌似就正常安装了。
这里我们直接从全球最大的同性交友平台github上下载就可以了,进入github官网,直接搜索spring-projects/spring-framework
,第一个就是我们需要的。
进去项目里面,选择我们需要的版本,我这里下载的是5.0.x
,这里我直接下载的源码的压缩包。
然后解压到E:\Spring-Resource\spring-framework-5.0.x
由于我这里已经编译过了,所以根目录下会有.setting文件夹。
在尝试多次编译失败之后,偶然在百度上看到,说直接双击运行spring-framework-5.0.x
文件夹里面的import-into-eclipse.bat
,我也只能死马当成活马医了,试一下吧,然后意外的是,没有报错!!!!!
弹出如下窗口,开始下载依赖包了,第一次运行了十几秒之后提示fail并且自动退出了,我又运行一次,就正常了。
过程是漫长的,耐心等待即可。 出现编译成功的绿条之后,不要着急按任意键!
编译结束之后 我看了一下gradle的本地仓库文件夹里面,多了将近一个G的新文件,也就是说spring编译的过程,也就是拼电脑配置和网速的时候了。编译的时间长短,取决于你的电脑的配置和网速。还有一点就是需要检查你的gradle的本地仓库的位置是不是自定义的,因为默认会在C盘比如我的是在C:\Users\linmengmeng\.gradle
,到这里我才发现我之前没有配置本地仓库,写博客时就把本地仓库加在前面环境变量了。
可以看到cmd窗口里面提示到编译完成之后,下面开始第二步:
直接在eclipse的左侧项目空白处右键===>Import===>Existing Projects into Workspace,选择spring源码解压的根目录。
由于我当时没有安装groovy和ajnature,这里会有一个提醒安装的弹窗,这点还是很方便的。这里默认勾选了这两个插件,直接点Show Solutions。
eclipse卡了一下之后,弹出下面的弹窗,但是只有Groovy的Install按钮,那就点击Install安装就完事了。
然后提示是否重启eclipse,点击立即重启即可。重启之后就可以看到Project下出现了这么多新的项目
但是这个spring-beans上面有个叉,不用着急,让eclipse飞一会就好了,等右下角的progress绿条反应完就好了。
如果还有问题,可以 看一下Problem里面的具体信息,我这里是提示groovy的编译版本跟工作空间的不一致,这个错误忘了截图了,记得就是提示一个是2.4,另一个是2.5,直接右键项目名,然后选择Properties,然后将groovy的编译的版本改成后面的那个就好了,根据实际情况,你的不一定也是2.5,我晚上回去在我自己电脑上编译的时候,这个报错信息就变成需要改为3.0了。
我在我自己电脑上导入项目之后,spring-jdbc项目上面有个感叹号,然后依赖spring-jdbc的别的模块也是提示依赖的模块spring-jdbc中有错误。记得Problem里面提示spring-jdbc项目缺少一个jar包,然后我在eclipse里面倒腾了半天,也没有将那个依赖弄好,最后没办法了,就自己手动下载,然后导入到项目里面。
我这里提示的是缺少derby-10.14.2.0.jar
,所以我们直接在中央仓库里面搜这个依赖即可
下载到本地之后,我们需要将其放在gradle的本地仓库里面,我这里使用的路径是D:\gradle\local_repository
,我们可以看一下gradle的jar包的目录
然后我们找到缺少的那个jar包的路径
这里面有俩,我看了一下里面的目录是有固定套路的,里面是版本号文件夹,版本号文件夹里面还有两个随机命名的文件夹,一个文件夹里面放了pom文件,另一个文件夹放了jar文件,我的derby-project
文件夹下面只有一个pom文件所在的随机文件夹,于是我便自己新建了一个文件夹,然后把刚才下载的jar包扔里面
接着在Eclipse里面手动指定jar的位置。
右键spring-jdbc项目---Build Path-----Config Build Path
可以看到这里这个jar包的位置就是刚才手动创建的。这是修改之后的,修改之前这个异常的jar信息应该是在jar包列表的最后一行,选中异常的jar,点击右侧的Edit即可手动指定其位置。
然后点击Apply and Close 给Eclipse一点反应的时间,直到所有的子项目都没有错误信息,就可以开始下一步了。
cmd窗口中提示,第三步,提示的大致意思:
不幸的是,eclipse不允许导入项目层次结构,因此我们不得不在过程中跳过根项目元数据的生成
貌似是提示我们:刚才我们导入的项目,只是一些分离的子项目,我们需要一个父项目。那就按任意键,接着往下走,接着编译
不出意外的话,会顺利出现绿条,然后接着第四步。
重复第二步,导入根项目,然后可以看到Eclipse里面新导入一个名为spring
的项目,包含了所有第二步导入的子项目,这样我们就可以在代码中在多个模块之间来回切换了。
从第四步的提示中,看到还要最后一步呢,但是当我完成第四步之后回到cmd窗口,敲了回车之后,没反应,连敲了两次回车之后,cmd窗口一闪就消失了。。。。。。。
不知道最后一步是什么操作,但是又没有影响我后面的操作。
但是到目前为止,我们已经顺利把源码导入到eclipse里面了。
这里创建一个简单的测试,开始我们的第一个demo之旅吧。
其中红框选中的就是我们自己写的测试demo了。
首先是新建一个简单的实体类MyTestBean.java
,然后使用xml文件,让Spring将我们这个类添加到容器中。
package my.test.bean;
/**
*
* @author linmengmeng
* @since 5.0
*/
public class MyTestBean {
private String testStr = "testStr";
/**
* @return the testStr
*/
public String getTestStr() {
return testStr;
}
/**
* @param testStr the testStr to set
*/
public void setTestStr(String testStr) {
this.testStr = testStr;
}
}
然后是xml文件的内容,很简单,就是使用
标签,来告诉Spring需要将这个类装载到容器里面。
beanFactoryTest.xml内容:
<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="my.test.bean.MyTestBean">bean>
beans>
最后是我们的测试文件:BeanFactoryTest.java
package my.test.bean;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import static org.junit.Assert.*;
/**
*
* @author linmengmeng
* @since 5.0
*/
@SuppressWarnings("deprecation")
public class BeanFactoryTest {
@Test
public void testSimpleLoad() {
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("/my/test/bean/beanFactoryTest.xml"));
MyTestBean testBean = (MyTestBean) beanFactory.getBean("myTestBean");
assertEquals("testStr", testBean.getTestStr());
}
}
右键testSimpleLoad
方法,Run as 可以看到左侧的小绿条,证明我们这个测试通过了。
看到绿条出现的那一刻,真的是舒服,折腾了半天终于弄好了,哈哈。
看似简单的几行代码,Spring究竟做了哪些工作呢?这个就是我们需要了解的了。源码之旅从今天就开始了,小伙伴们让我们一起学习吧,后续有机会我会接着分享自己的源码学习记录。
最后贴上一份知秋大佬翻译的Spring源码的中文文档,感觉是真的良心之作了,对于我这种英语渣渣来说,中英文对照看,是真的太棒了。
Spring Framework 5.0.0.M3中文文档
Spring Framework 5.0.0.M3英文文档 提取码: xvdy
备用地址: 提取码: t6mi
Spring Framework 各个版本源码文档(英文) 可以下载PDF文档,比如我需要下载5.0.0.M3
版本的文档,打开前面的链接之后,选择5.0.0.M3
,然后依次打开目录5.0.0.M3/spring-framework-reference/pdf/spring-framework-reference.pdf
,在预览界面上右键,然后另存为即可。
本来打算把自己写的测试用例同步到github上呢,结果把项目给弄崩了,然后试着这个博客再重新编译了一次,完美编译和上传到github上。不过这次搞好了那个AspectJ插件的安装,虽然版本和我用的Eclipse版本不一致,但还是装上了。
这里放上AJDT的页面链接:https://www.eclipse.org/ajdt/downloads/
目前最新的版本是适用于Eclipse 4.10的,我使用的是4.11,但是我还是装了这个。