spring5 源码深度解析-----Spring的整体架构和环境搭建

2021-02-06 20:15

阅读:617

标签:task   windows环境   for   图片   int   png   --   bsp   find   

gradle安装

Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写,需要到gradle官网下载对应版本,http://services.gradle.org/distributions
windows环境下需要修改系统变量,添加GRADLE_HOME系统变量,指向gradle根目录。环境配置成功后,在命令行输入:gradle -v 显示如下截图: 

技术图片

 

源码链接获取

1.进入官网https://projects.spring.io/spring-framework/,点击那个小猫的图像,进入github下载相应版本的spring源码。

技术图片

 
2. 切换为最新的 Spring 5.1. x版 源码 ,获取 Git 分支链接
 
技术图片

源码下载及 IDEA 导入 

1. IDEA Spring Git 拉取分支
技术图片
2. 本地安装目录设置
技术图片
3. 拉取等待

 技术图片

也可以手动直接下载源码到本地

4.执行gradlew.bat

技术图片

直接双击执行gradlew.bat即可。执行完成以后,会出现build success的提示,但是这个时候还不算完,为了导入能导入idea中,还需要用gradlew命令去编译spring-oxm文件包。 

即执行以下命令:gradlew.bat cleanIdea :spring-oxm:compileTestJava
完成后,看到如下结果,就离成功不远了。

技术图片

5.IDEA导入源码

 技术图片

此处的gradle使用我们之前自己安装的4.3.1版本,不要用IDE自带的;

将jdk版本升级到1.8,因为在最新的Spring中使用到了jdk1.8的新特性,如果不升级到1.8会报错;

最后idea会自动编译spring源码,编译成功以后,所有的模块都会有个小小的蓝色图标,表示编译成功,至此spring源码导入完成。 

技术图片

导入项目遇见问题

1.No such property: immutableValues for class: org.gradle.api.internal.tasks.DefaultTaskDependency

修改:spring-beans.gradle

注释掉这两行代码
//def deps = compileGroovy.taskDependencies.immutableValues + compileGroovy.taskDependencies.mutableValues
//compileGroovy.dependsOn = deps - ‘compileJava‘

2.Could not find method useJUnitPlatform()

技术图片
注释:spring-test.gradle中这行代码
//  useJUnitPlatform {
//    includeEngines ‘junit-jupiter‘
//    excludeTags ‘failing-test-case‘
// }
技术图片
回到顶部

创建测试项目

导入成功之后可以在project下创建一个自己的测试module

1.项目根目录右键 -> new -> module -> gradle

技术图片

2.在新项目的build.gradle下添加对spring模块的依赖,这里我先添加了spring-beans 和spring-core的依赖。

技术图片
dependencies {
    compile(project(":spring-beans"))
    compile(project(":spring-core"))
    testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.12‘
}
技术图片

3.在新项目的src/main/resource下添加spring-config.xml文件

技术图片
技术图片

4.创建测试bean和启动类

技术图片
package com.chenhao.spring;

/**
 * @author: ChenHao
 * @Description:
 * @Date: Created in 10:35 2019/6/19
 * @Modified by:
 */
public class MyTestBean {
    private String name = "ChenHao";

    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;
    }
}
技术图片
技术图片
import com.chenhao.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: ChenHao
 * @Description:
 * @Date: Created in 10:36 2019/6/19
 * @Modified by:
 */
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());
    }
}
技术图片

 技术图片

之后就可以愉快的调试spring源码了。

https://www.cnblogs.com/java-chen-hao/p/11046190.html

spring5 源码深度解析-----Spring的整体架构和环境搭建

标签:task   windows环境   for   图片   int   png   --   bsp   find   

原文地址:https://www.cnblogs.com/alphacode/p/12781424.html


评论


亲,登录后才可以留言!