特性
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是帮助开发者快速创建独立的、生产级的基于 Spring 框架的应用程序。以下是 Spring Boot 的一些主要特点:
-  简化配置:Spring Boot 提供了自动配置机制,能够根据类路径中的依赖自动配置 Spring 应用。例如,如果在类路径中存在 H2 数据库驱动,它会自动配置一个内存数据库。 
-  独立运行:使用内嵌的服务器(如 Tomcat 或 Jetty),Spring Boot 应用可以被打包成 JAR 文件并直接运行,而不需要外部部署环境。 
-  起步依赖:通过定义一组对常用功能的依赖描述符(即 Starter 依赖),简化了 Maven 或 Gradle 构建配置。比如 spring-boot-starter-web包含了构建 Web 应用所需的所有依赖。
-  健康检查与监控:内置了 Actuator 模块,提供了应用健康状态检查、度量指标收集等功能,有助于运维和监控。 
-  命令行接口:提供了一个 CLI 工具,允许用户直接在命令行编写 Groovy 脚本来快速测试 Spring 功能。 
-  开发工具支持:包括热部署、远程调试等特性,提高了开发效率。 
-  非功能性特性:开箱即用地支持多种非功能性需求,如安全性、批处理、消息传递等。 
示例
要开始使用 Spring Boot,您只需要添加适当的依赖到您的项目中,并创建一个带有 @SpringBootApplication 注解的主类即可启动应用程序。下面是一个简单的 Hello World 示例:
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}@RestControllerclass HelloWorldController {@GetMapping("/hello")String hello() {return "Hello, World!";}}
}
这段代码定义了一个 RESTful Web 服务,当访问 /hello 路径时会返回 "Hello, World!" 字符串。
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 http://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>3.0.4</version> <!-- 请根据需要选择合适的Spring Boot版本 --><relativePath/> <!-- lookup parent from repository --></parent><groupId>org.example</groupId><artifactId>bear-springboot</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><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>
工程结构
 
 访问
 
这样一个最简单的springboot后端工程就搞定了,非常简单,不需要额外的配置、不需要tomcat或者别的服务器、不需要引入各种依赖jar包。这就是文章开头说的:
其设计目的是帮助开发者快速创建独立的、生产级的基于 Spring 框架的应用程序
也就说,Spring Boot 并不是新创造的东西,它是基于Spring框架,提供一整套更方便的开发框架和方式。那么SpringBoot是怎么做到的?我们看看启动类的代码都干了什么。
代码解释
1. 包声明
package org.example;
- 这行代码指定了该 Java 类所在的包名为 org.example。包名用于组织和命名空间隔离,确保类名在不同项目中不会冲突。
2. 导入语句
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;
- org.springframework.boot.*: 导入了 Spring Boot 的核心类库,包括启动应用程序所需的类。
- org.springframework.boot.autoconfigure.*: 导入了自动配置相关的类,Spring Boot 会根据这些配置自动设置应用程序环境。
- org.springframework.web.bind.annotation.*: 导入了构建 RESTful Web 服务所需的注解,如- @RestController和- @GetMapping。
3. 主类定义
@SpringBootApplication
public class Application {
- @SpringBootApplication: 这是一个组合注解,包含了以下三个注解的功能:- @Configuration: 标识该类为配置类,允许使用- @Bean注解来定义组件。
- @EnableAutoConfiguration: 启用 Spring Boot 的自动配置机制,根据类路径中的依赖自动配置应用程序。
- @ComponentScan: 自动扫描并注册带有- @Component、- @Service、- @Repository等注解的类为 Spring Bean。
 
4. 主方法
public static void main(String[] args) {SpringApplication.run(Application.class, args);
}
- main方法是应用程序的入口点。
- SpringApplication.run(Application.class, args):创建并启动 Spring Boot 应用程序。它会执行以下操作:- 解析命令行参数。
- 初始化 Spring 应用上下文(ApplicationContext)。
- 执行自动配置。
- 启动内嵌的服务器(如 Tomcat),如果应用包含 Web 组件。
 
5. 内部控制器类
@RestController
class HelloWorldController {@GetMapping("/hello")String hello() {return "Hello, World!";}
}
- @RestController: 将该类标记为一个 RESTful 控制器,所有方法返回的内容将直接作为 HTTP 响应体返回给客户端。
- HelloWorldController是一个内部类,定义了一个简单的 REST API。- @GetMapping("/hello"): 指定该方法处理 HTTP GET 请求,路径为- /hello。
- String hello(): 当访问- /hello路径时,该方法被调用并返回字符串- "Hello, World!"。
 
总结
其实,关键就是SpringApplication.run(Application.class, args),在启动的时候干了各种事情,解析注解、生成上下文、启动tomcat等,后续会有篇幅具体解析下这个启动函数干了什么,从源码的层面加深理解。