001.SpringBoot简介

182 阅读3分钟

Spring Boot简介

Spring Boot是Spring家族中的一个框架。它用为简化Spring应用开发而生的。Spring Boot 中的 Boot 一词,即为快速启动的意思。Spring Boot 可以在零配置情况下一键启动,简洁而优雅。

为了让 Spring 开发者简化开发,Spring 团队做了以下设计:

  • 简化依赖,提供整合的依赖项,告别逐一添加依赖项的烦恼;
  • 简化配置,提供约定俗成的默认配置,告别编写各种配置的繁琐;
  • 简化部署,内置 servlet 容器,开发时一键即运行。可打包为 jar 文件,部署时一行命令即启动;
  • 简化监控,提供简单方便的运行监控方式。

基于以上设计目的,Spring 团队推出了 Spring Boot 。

官网地址:spring.io/

官网Spring Boot

1. 官网中springboot的位置

image-20230406101536223

2. 官网中版本的说明

image-20230406101756309

  • CURRENT:当前最新版本。但是有可能不是最稳定的版本
  • GA(General availability):正式发布的版本。
  • SNAPSHOT:快照版,即开发版
  • PRE:预览版,用于新技术或者新功能的尝鲜。

说明:

Spring3.0框架是基于Spring6版本的。需要JDK最少也要11

如果是JDK8的话,那么选2.X版本

Spring Boot的特性

  • 能够快速创建基于Spring的应用程序
  • 内嵌web容器,不需要打成war包,单独启动一个jar包即可。默认web容器为tomcat,当然也可以很方便的替换为其他容器。
  • 提供约定的starter POM来简化Maven配置。
  • 自动化配置,根据项目的Maven依赖配置,Spring Boot自动配置Spring、SpringMVC等
  • 提供了程序的健康检查等功能
  • 基本可以完全不使用XML配置文件

创建第一个项目

1. 新建一个模块

image-20230406105959107

2. 增加起步依赖

image-20230406112049194

3. 生成的模块内容

image-20230406135225692

4. 创建一个测试类

@RestController
public class MyController {
    @RequestMapping("/hello")
    public String hello() {
        return "hello the world!";
    }
}

5. 访问测试

image-20230406144159275

6. 初体验

  • 没有以前springMVC项目时,那么多的xml配置文件;这里一个都没有
  • 不用在tomcat中测试。直接就能调试测试了。

第一个项目回顾

1. 自动生成的pom文件内容

其中内容可以删减部分内容。大体配置如下:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--继承父项目方式-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.10</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.mayuanfei</groupId>
    <artifactId>springboot01</artifactId>
    <version>1.0.1</version>
    
    <dependencies>
        <!-- web项目相关依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
​
        <!-- 测试相关依赖 -->
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-test</artifactId>-->
<!--            <scope>test</scope>-->
<!--        </dependency>-->
    </dependencies>
​
    <build>
        <plugins>
            <!--springboot项目打包插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build></project>

这里可以我们的pom文件指定父工程为:

<!--继承父项目-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.10</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

由于继承了这个父工程,所以下面当我们依赖Web相关内容的时候不用写版本号了

<!-- web项目相关依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

这是因为在spring-boot-starter-parent--->spring-boot-dependencies中已经定义了与该springboot版本兼容的jar包版本依赖。

2. web项目依赖传递

项目虽然仅仅依赖了一个spring-boot-starter-web,但是由于maven的依赖传递特性,有很多东西被依赖进来了

image-20230406165402706

3. springboot启动类

@SpringBootApplication
public class Springboot01Application {
    public static void main(String[] args) {
        SpringApplication.run(Springboot01Application.class, args);
    }
}

这其中@SpringBootApplication 标识当前类为启动入口类。Spring boot项目会以这个类的main方法作为程序入口。main方法使用SpringApplication.run方法来启动应用程序。

被标识@SpringBootApplication 的启动类,会把它同级或者以下目录中有spring注解的类,加入到Spring容器中。所以我们一般为了能使我们创建的类被spring框架扫描到,都是在这个启动类的同级或者子级目录下进行创建的。比如上例中的MyController类:

image-20230406171302201

代码地址

gitee.com/mayuanfei/S…下的springboot01

记忆印记

  • springboot是为了简化spring的开发而应运而生的,它使得使用spring框架更加简单
  • 第一个项目采用父项目为spring-boot-starter-parent从而使得再使用很多jar包时,不用写版本号
  • 我们创建的类要在springboot启动类的同级或者子级中,才能被spring框架加入容器管理。