首页天道酬勤spring boot 源码调试,springboot项目源码

spring boot 源码调试,springboot项目源码

张世龙 05-06 08:44 117次浏览

首先,要阅读Spring Boot源代码,必须了解有关spring框架的知识和源代码的详细信息。 请参考以前相关博客的内容。 接下来,我们主要着手研究Spring Boot。 如果您还不知道如何使用Spring Boot,请花点时间进入构建过程。

本文主要是读源代码的第一步,构建Spring Boot源代码的阅读环境。 我们仍然在使用IDEA工具。

环境为JDK8 Maven3.5 IntelliJ IDEA下载源代码写这篇文章时,19年4月20日左右,2.2.0版源代码在编译时一直存在问题。 折中下载并编译了2.1.x版源代码吗?

直接下载版本2.1.x的源代码只有10Mb多,可以立即下载。

《============================ 以下为克隆最新源码的方式 =============================》

官方的仓库地址是https://github.com/spring-projects/spring-boot

如果直接git clone https://github.com/spring-projects/spring-boot.git有问题,请报告。

错误: RPC故障; curl 18 transferclosedwithoutstandingreaddataremainingfatal 3360 theremoteendhungupunexpectedlyfatal 3360 earlyeofffatatal 3360索引

一种是通过ssh方法克隆。 前提是需要将福克斯官方仓库带到自己的github,为ssh创建密钥。 然后克隆。

git clone自己仓库的ssh地址约400Mb,最近学校网很慢,下了整整一天……

另一种方案是只检测最新的一版代码,放弃版本更新历史记录。 不要在意Spring Boot的发展史。

git clone-- depth 1https://github.com/spring-projects/spring-boot.git第二方案尺寸相对大幅减少,速度加快。

在导入IDEA和导入IDEA之前,请确保安装了Maven3.5或更高版本。 以前的版本似乎是Maven插件在编译时报告错误。

修改根目录下的pom文件,在第15行中添加disable.checks true/disable.checks。

为了加快所有jar软件包的下载,请记住修改settings.xml文件将Maven源代码配置为Alibaba云(AlibabaCloud )镜像仓库。

mirrorsmirroridnexus-a liyun/idmirrorofcentral/mirrorofnamenexusaliyun/name URL http://maven.a liyun.com/nexus/contentent

更改源代码后,下载速度迅速,原本下午的时间会大幅缩短,不会报告奇怪的错误。 因为有时下载失败了,无法编译。 出了问题,我的做法很暴力,直接把当地仓库删除干净,然后重新编译。

编译步骤是进入和执行源根目录。

mvncleaninstall-dskiptests-p fast可以等待编译成功,然后使用IDEA导入Spring Boot工程源代码。

然后导入IDEA就可以了。 请记住,IDEA的Maven版本也必须选择3.5版。

打开spring-boot-hibernate52-tests项目的Hibernate52Application类,然后直接单击以运行它,查看是否成功。

测试工序选择spring-boot-tests模块,右键单击new -’moudle,然后选择名为spring-boot-guoping-tests的测试模块和spring-boot-tests

修改的pom文件。

? XML版本=' 1.0 '编码=' utf-8 '? project xmlns=' http://maven.Apache.org/POM/4.0.0 ' xmlns : xsi=' http://www.w3.org/2001/XML方案ins ttins

d/maven-4.0.0.xsd"><parent><artifactId>spring-boot-tests</artifactId><groupId>org.springframework.boot</groupId><version>${revision}</version></parent><modelVersion>4.0.0</modelVersion><artifactId>spring-boot-guoping-tests</artifactId><packaging>pom</packaging><modules><module>spring-boot-guoping-mvc-tests</module></modules><description>我的Spring Boot测试模块</description><properties><main.basedir>${basedir}/../..</main.basedir><java.version>1.8</java.version></properties></project>

再选中刚刚创建的 spring-boot-guoping-tests 的测试模块,继续右键 New -》Moudle,新建一个名为 spring-boot-guoping-mvc-tests 的模块,类似于 spring-boot-integration-tests 中的 spring-boot-configuration-processor-tests 等。

接下来我们就是在 spring-boot-guoping-mvc-tests 模块中新建测试项目,主要新建一个 hello world 的MVC测试工程。

编辑 spring-boot-guoping-mvc-tests 模块的 pom 文件,就像平常使用Spring Boot一样。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring-boot-guoping-tests</artifactId><groupId>org.springframework.boot</groupId><version>${revision}</version></parent><modelVersion>4.0.0</modelVersion><artifactId>spring-boot-guoping-mvc-tests</artifactId><name>我的Spring Boot测试模块 之 MVC部分</name><description>${project.name}</description><properties><main.basedir>${basedir}/../../..</main.basedir></properties><dependencies><!-- Compile --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

在 spring-boot-guoping-mvc-tests 模块中新建 SpringBootApplication 类 MyTestMVCApplication:

package guo.ping.test.mvc;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/** * @description: 自己搭建的MVC测试工程 * @author: guoping wang * @date: 2019/4/21 15:26 * @project: spring-boot-build */@SpringBootApplicationpublic class MyTestMVCApplication {public static void main(String[] args) {SpringApplication.run(MyTestMVCApplication.class, args);}}

然后再新建一个 Controller:

package guo.ping.test.mvc.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;/** * @description: 测试Controller * @author: guoping wang * @date: 2019/4/21 15:27 * @project: spring-boot-build */@Controller@RequestMapping("/test")public class MyTestController {@ResponseBody@RequestMapping("/hello")public String hello() {return "hello world";}}

运行 MyTestMVCApplication 中的 main 方法:

浏览器输入:http://localhost:8080/test/hello

喜极而泣,到这一步整整花了两天,该死的网络和 Maven 插件!!

参考文章 01–SpringBoot源码阅读环境搭建
springboot编程思想,sentinel源码分析