天天看点

Spring Boot:介绍与初体验

Spring Boot 介绍

​Spring Boot​

​​用于创建可运行的、独立的、生产级的基于​

​Spring​

​​的应用程序。​

​Spring Boot​

​​对​

​Spring​

​​和第三方库持约定大于配置的观念,以便可以轻松上手。大多数​

​Spring Boot​

​应用程序只需要很少的配置。

​Spring Boot​

​​可以通过使用​

​java -jar​

​​或更传统的​

​war​

​​包部署来启动​

​Java​

​​应用程序,​

​Spring Boot​

​的目标是:

  • 为所有​

    ​Spring​

    ​开发提供从根本上更快且可广泛访问的体验。
  • 开箱即用。
  • 提供一系列大型项目通用的非功能特性(例如嵌入式服务器、安全性、指标、健康检查和外部化配置)。
  • 没有代码生成,也不需要​

    ​XML​

    ​配置。

系统要求

​Spring Boot 2.6.2​

​​需要​

​Java 8​

​​,并且兼容​

​Java 17​

​​(包括​

​Java 17​

​​ ),还需要​

​Spring Framework 5.3.14​

​​或更高版本,博主的​

​Spring Boot​

​​系列博客都将基于​

​Spring Boot 2.6.2​

​,它是目前最新的正式版。

Spring Boot:介绍与初体验

构建工具

​Spring Boot​

​为以下构建工具提供了显式构建支持:

  • ​Maven 3.5+​

  • ​Gradle 6.8.x 6.9.x 7.x​

Servlet 容器

​Spring Boot​

​​支持如下图所示的嵌入式​

​Servlet​

​容器:

Spring Boot:介绍与初体验

可以将​

​Spring Boot​

​​应用程序部署到任何兼容​

​Servlet 3.1+​

​的容器。

初体验

使用​

​IDEA​

​​创建​

​Spring Boot​

​应用程序,如下图所示进行操作。

Spring Boot:介绍与初体验

使用​

​Spring Initializer​

​​构建​

​Spring Boot​

​​项目比较方便,可以让我们选择需要的依赖、​

​Spring Boot​

​​版本、语言和打包方式,并且还会自动生成项目常用文件(如配置文件、静态文件的包、启动类等)。当然也可以使用​

​Maven​

​​构建​

​Spring Boot​

​​项目,博主平时喜欢使用​

​Maven​

​​构建项目(自己写启动类、配置文件和​

​pom.xml​

​​即可,可以让我们更加熟悉构建​

​Spring Boot​

​​项目的流程),​

​Spring Initializer​

​​应该也是通过​

​Maven​

​来构建项目,只不过在构建项目时提供了一些便利。

Spring Boot:介绍与初体验

选择依赖和​

​Spring Boot​

​​版本,博主带大家体验一下用​

​Spring Boot​

​​编写一个接口的方便,因此需要​

​web​

​​依赖(​

​webflux​

​以后也会介绍)。

Spring Boot:介绍与初体验

构建的​

​Spring Boot​

​项目的结构如下图所示:

Spring Boot:介绍与初体验

​pom.xml​

​:

<?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.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <groupId>com.kaven</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    
    <name>springboot</name>
    <description>springboot</description>
    
    <properties>
        <java.version>1.8</java.version>
    </properties>
    
    <dependencies>
        <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>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>      

启动类:

package com.kaven.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootApplication {

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

​@SpringBootApplication​

​​注解是启动类的关键,它会开启自动配置和组件扫描,大家现在可以不用管这些,以后博主都会详细介绍。​

​SpringApplication.run()​

​​则会创建和管理应用上下文以及打印​

​Banner​

​等。

启动应用,如下图所示进行操作:

Spring Boot:介绍与初体验

启动成功,如下图所示:

Spring Boot:介绍与初体验

写一个​

​Hellow World​

​​接口,根据习惯,将接口放在​

​controller​

​包下。

Spring Boot:介绍与初体验
package com.kaven.springboot.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {
    @GetMapping("/helloworld")
    public String helloWorld() {
        return "Hello World";
    }
}      

​@RestController​

​​是一个便利的注解,它组合了​

​@Controller​

​​(带有此注解的类型被视为控制器)和​

​@ResponseBody​

​​(指示方法的返回值应绑定到​

​Web​

​​响应的​

​Body​

​​中)注解。​

​@GetMapping("/helloworld")​

​​注解定义了接口处理的请求类型(​

​GET​

​​)和请求路径(​

​/helloworld​

​),用于处理请求。

重新启动应用,再访问接口,​

​Spring Boot​

​​应用默认启动在​

​8080​

​端口上。

Spring Boot:介绍与初体验

访问接口时,应用的控制台也有日志输出,​

​DispatcherServlet​

​​是一种​

​Servlet​

​实现,可以用于将请求派发给指定的控制器中定义的接口,但它的作用不仅如此,以后博主也会详细介绍。