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
为以下构建工具提供了显式构建支持:
-
Maven 3.5+
-
Gradle 6.8.x 6.9.x 7.x
Servlet 容器
Spring Boot
支持如下图所示的嵌入式
Servlet
容器:
可以将
Spring Boot
应用程序部署到任何兼容
Servlet 3.1+
的容器。
初体验
使用
IDEA
创建
Spring Boot
应用程序,如下图所示进行操作。
使用
Spring Initializer
构建
Spring Boot
项目比较方便,可以让我们选择需要的依赖、
Spring Boot
版本、语言和打包方式,并且还会自动生成项目常用文件(如配置文件、静态文件的包、启动类等)。当然也可以使用
Maven
构建
Spring Boot
项目,博主平时喜欢使用
Maven
构建项目(自己写启动类、配置文件和
pom.xml
即可,可以让我们更加熟悉构建
Spring Boot
项目的流程),
Spring Initializer
应该也是通过
Maven
来构建项目,只不过在构建项目时提供了一些便利。
选择依赖和
Spring Boot
版本,博主带大家体验一下用
Spring Boot
编写一个接口的方便,因此需要
web
依赖(
webflux
以后也会介绍)。
构建的
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
等。
启动应用,如下图所示进行操作:
启动成功,如下图所示:
写一个
Hellow World
接口,根据习惯,将接口放在
controller
包下。
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
端口上。
访问接口时,应用的控制台也有日志输出,
DispatcherServlet
是一种
Servlet
实现,可以用于将请求派发给指定的控制器中定义的接口,但它的作用不仅如此,以后博主也会详细介绍。