特性
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等,后续会有篇幅具体解析下这个启动函数干了什么,从源码的层面加深理解。