Spring5.x部署到IDEA
前言
自从六月份辞职到现在,三个多月,这期间不是学车就是学习。给自己列了一个清单从Java基础到高级,每天都去b站找视频看,然后跟着手写,写笔记!
对于Spring其实我是觉得比较尴尬的,因为我之前说的我以前也报班学过Java,也说了Spring不过当时是完完全全0基础,所以短短三个月啥也没学出来。后来自己打算辞职之后走开发的路时就纠结是重新学Java基础(是指从面向对象开始学),还是直接学应用开发!我跟我一个朋友一起讨论了之后,打算还是直接学应用开发也就是直接上手SpringBoot(这里要声明,我对Spring不是一点基础没有,更不是对Java基础一点都没有,如果扪心自问确确实实自己是0基础的,还是要从基础看啊)。
因为基础十分不牢,所以我得辛苦采坑可想而知,从去年七八月份开始学,学到年底进展几乎不大,也就勉强会用了。后来又去网上买王松的微人事课,把springboot和vue整合的做了个项目,还顺手学了SpringCloud。加上这段时间又看了一些其他高级基础,所以现在打算看Spring源码的,这件事在我的计划单里面是和Mysql高级知识一样划了重点,都不是一蹴而就的,所以请耐心!话不多说,下面进入正题!
拉取源码前的声明
第一声明:请看完全文再操作!!!
关于拉取Spring源码,我这里不建议直接cloneGitHub的仓库,因为很慢,建议将他的仓库导入到码云里再导入!
这里要着重声明:如果你导入最新的Spring源码,那么如果你的jdk是8或以下,那么可能会遇到如下问题,这个包是9才出来的,所以你得升级你的jdk,我这里是直接升级到了11,现在也很方便,连环境变量都不用配置!
jdk.jfr.*

或者不用最新版的Spring,可以拉下面仓库:
https://gitee.com/lenve/spring-framework
第二步安装gradle
因为最新版的Spring是用Gradle构建的,所以你要拉去代码得有gradle,两种方式,自己去下载然后配置环境变量,你项目就用你本地gradle,第二就是项目导入的时候他会默认下载gradle,那个就是适配你工程的gradle,只要你的网够快或者有代理,那你最好下载那个!
gradle安装与配置请戳这里,请务必看哦!
第三步导入idea
先close你当前项目,直接用idea来clone项目。
我在网上看了很多本地导入的,他们说要先编译啊,然后怎么样怎么样。我一开始也想这么做,不过在初始化的时候他总是去下载gradle,我觉得很麻烦,所以我就直接用idea导入,让idea自己去build

当然你一开始导入,你会发现idea的任务栏里面还是有下载gradle,你把它停了,照上面的配置,使之用你本地的gradle,这里要说明gradle版本最好和工程的一致,就算有相差也别差太大。我这里spring工程里的是6.6.1,我本地是6.5。
这里我还要特别声明一下:
我刚刚在上面列了一个别人的Spring源码,恕我直言你最好用那个方法,不要拉最新的,我看了一下,他的源码 jdk8就可以,他的gradle用的就是6.5.1。所以请拉去他的源码
如果你需要升级jdk,在idea里使用,你也就别配什么环境变量了,直接在idea导入你的jdk用就行了!我升级的时候捣鼓环境变量,把我自己的javac都捣鼓出问题了,好在我不用记事本写代码!
把工程所有的地方全换成jdk11之后,点击build,只要成功,那就说明你基本OK了!
创建测试工程
New-Module-Gradle(默认选中Java),创建项目,我这里有个问题就是项目一旦创建完成之后,所有工程全部都展开,然后所有的模块都加了个jmh和testfixTure,不过不影响我,我也没在意!

左边是工程结构,这里要把junit降级,他默认是4.12,但是在执行过程中报错

后来我拿里面的报错去百度的,说是Junit版本高了,好像是4.12需要再加一个依赖,我没太看仔细,反正他说只要降级就可以了!这里他建议用4.10,然后重新构建,就OK了!
创建测试Bean
package com.study.spring;
/**
* @author 朝花不迟暮
* @version 1.0
* @date 2020/9/30 23:23
*/
public class MyTestBean
{
private String name = "Leo";
public MyTestBean(String name) {
this.name = name;
}
public MyTestBean() {
}
@Override
public String toString() {
return "MyTestBean{" +
"name='" + name + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在resources目录下创建spring-config.xml
<?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.study.spring.MyTestBean"/>
</beans>
在test目录下,新建一个测试类
import com.study.spring.MyTestBean;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
/**
* @author 朝花不迟暮
* @version 1.0
* @date 2020/9/30 23:23
*/
public class AppTest
{
@Test
public void MyTestBeanTest() {
BeanFactory bf = new XmlBeanFactory( new ClassPathResource("spring-config.xml"));
MyTestBean myTestBean = (MyTestBean) bf.getBean("myTestBean");
System.out.println(myTestBean.getName());
}
}
执行结果打印Leo,说明OK!
总结
我遇到的问题总结:
找不到jdk.jrf.*的包,解决是升级jdk
Junit版本太高,解决是降级
中间遇到的其他啥问题,我也忘了,肯定都是好解决的!
详情参考:
https://www.cnblogs.com/java-chen-hao/p/11113340.html
下面说正事:

我的公众号:窗前居士

B站传送道:https://space.bilibili.com/322611850
感谢光临,谢谢~~

浙公网安备 33010602011771号