1、官网的功能特性简介

image.png

[

](https://github.com/spring-projects/spring-boot)

2、选择对应的版本进行下载

官网下载地址https://github.com/spring-projects/spring-boot
image.png
image.png

3、需要提前准备的条件

image.png

官网说了,可以gradle、maven自己选择一种作为构建系统

4、开始构建

注意:maven版本一定要匹配,不然导入不了。

本来想用maven构建的,但是发现没有pom.xml,就临时改为用gradle构建
image.png
image.png

image.png

image.png

如果想快点同步完毕:
在buildSrc下面的 build.gradle settings.gradle 添加
在buildSrc外面的 build.gradle settings.gradle 添加

image.png

  1. maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
  2. maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
  3. maven { url "https://repo.spring.io/plugins-release" }

5、开始现有的项目进行测试

image.png

6.1、Gradle创建自己的项目进行测试

(官网有很多是用gradle进行源码构建,后面分析进入是class文件,如果这样不用构建源码也能进class的。
构建源码就是为了最后进的是java文件,我是通过官网给的模板来进行配置gradle的。步骤如下)

用Gradle来创建测试项目
image.png

image.png
image.png

1、gradle添加的版本依赖

注意: 不能存在下面这两个,我试过了,不能成功加载。只有去掉就能成功加载。
group ‘org.springframework.boot’
__version ‘2.3.13.BUILD-SNAPSHOT’

成功加载的文件如下:

  1. plugins {
  2. id "java"
  3. /*这个id是不能少的,不然Application就找不到对应的映射类*/
  4. id "org.springframework.boot.conventions"
  5. }
  6. sourceCompatibility = 11
  7. description = "Spring Boot demo2 test"
  8. repositories {
  9. mavenCentral()
  10. }
  11. dependencies {
  12. /*get & set*/
  13. compileOnly 'org.projectlombok:lombok:1.18.6'
  14. annotationProcessor 'org.projectlombok:lombok:1.18.6'
  15. /*引入spring web 的源码(其实在下面那些测试模块就有如何引用源码,不然它们怎么跑呢)*/
  16. implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))
  17. /* {
  18. exclude module: "spring-boot-starter-tomcat" // 必须要有Tomcat,不然启动完就掉了
  19. }*/
  20. /**测试类的源码*/
  21. testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))
  22. }

2、成功加载后的依赖如下

image.png

3、创建启动类

  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. @SpringBootApplication
  4. public class BootApplication {
  5. public static void main(String[] args) {
  6. SpringApplication.run(BootApplication.class,args);
  7. }
  8. }

4、创建controller

  1. import org.springframework.web.bind.annotation.RequestMapping;
  2. import org.springframework.web.bind.annotation.RestController;
  3. @RestController
  4. public class UserController {
  5. @RequestMapping("/query")
  6. public User query(){
  7. return new User("Hellow Word",1);
  8. }
  9. }

5、创建pojo类

用了@Setter@Getter,但是返回不了数据,说找不到对应的解析器,只能自己生成了。

  1. public class User {
  2. private String userName;
  3. private Integer age;
  4. public User(){}
  5. public User(String userName,Integer age){
  6. this.userName=userName;
  7. this.age=age;
  8. }
  9. public String getUserName() {
  10. return userName;
  11. }
  12. public void setUserName(String userName) {
  13. this.userName = userName;
  14. }
  15. public Integer getAge() {
  16. return age;
  17. }
  18. public void setAge(Integer age) {
  19. this.age = age;
  20. }
  21. }

6、整体结构图

image.png

7、运行查看效果

image.png

接下来我就可以开始分析源码了。debug后是进入到对应的java文件的。

SpringBoot项目在2.3.0之前是使用Maven构建项目的,在2.3.0之后是使用Gradle构建项目了

6.2、Maven创建自己的项目进行测试

https://github.com/spring-projects/spring-boot/releases

或者直接看tags这个,更直观
https://github.com/spring-projects/spring-boot/tags

1、 编译源码

进入spring-boot源码根目录

image.png

在地址栏全选,输入cmd回车。跳出如下的输入框
image.png

执行mvn命令: mvn clean install -DskipTests -Pfast // 跳过测试用例,会下载大量 jar 包(时 间会长一些)
image.png

但是要跑接近一个钟,感觉比较久,还是gradle的比较快。

image.png[

](https://blog.csdn.net/ganquanzhong/article/details/100401914)