-
什么是 Spring Boot
- Spring Boot 是一个用于构建独立的、基于 Spring 的生产级应用程序的框架。它简化了 Spring 应用的初始搭建以及开发过程,使得开发者能够快速地创建可以运行的应用程序,而无需进行大量的样板配置。
- 例如,在传统的 Spring 应用开发中,需要配置大量的 XML 文件或者 Java 配置类来定义各种 Bean,如数据源、事务管理器等。而 Spring Boot 通过自动配置(auto - configuration)功能,根据项目中添加的依赖自动配置这些组件,大大减少了配置的工作量。
-
核心特性
- 自动配置
- Spring Boot 的自动配置是其核心特性之一。它会根据类路径下的依赖和一些预定义的条件来自动配置 Spring 应用。
- 比如,当在项目的
pom.xml
(Maven 项目)或者build.gradle
(Gradle 项目)中添加了spring - webmvc
依赖,Spring Boot 会自动配置一个 Spring MVC 应用,包括配置DispatcherServlet
、视图解析器等组件。这些配置都是基于一系列的条件判断,如是否存在某个特定的类或者接口来触发相应的配置。
- 起步依赖(Starter Dependencies)
- Spring Boot 提供了一系列的起步依赖,这些依赖是将一组相关的依赖打包在一起,方便开发者使用。
- 例如,
spring - boot - starter - web
包含了构建一个 Web 应用所需要的基本依赖,如 Spring MVC、Tomcat 等。当在项目中添加这个起步依赖后,就可以快速地开始构建 Web 应用,而不需要逐个添加spring - mvc
、tomcat - embed - servlet
等依赖。
- 嵌入式服务器支持
- Spring Boot 支持嵌入式服务器,如 Tomcat、Jetty 和 Undertow。这些服务器可以直接嵌入到应用程序中,使得应用可以作为一个独立的可执行文件运行。
- 以 Tomcat 为例,在传统的 Web 应用开发中,需要将应用部署到外部的 Tomcat 服务器中。而在 Spring Boot 中,通过添加
spring - boot - starter - web
依赖,会自动嵌入 Tomcat 服务器。当启动应用时,Tomcat 会在应用内部启动,监听指定的端口(默认是 8080),处理 HTTP 请求。
- 自动配置
-
项目结构
- 典型的 Spring Boot 项目结构包含
src/main/java
、src/main/resources
和src/test/java
等目录。 - 在
src/main/java
目录下,通常有一个主应用类(带有@SpringBootApplication
注解),它是应用的入口点。例如:
- 典型的 Spring Boot 项目结构包含
收起
java
复制
import org.springframework.boot.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringBootApplication.run(MyApplication.class, args);
}
}
- 在
src/main/resources
目录中,包含配置文件(如application.properties
或application.yml
),用于配置应用的各种属性,如服务器端口、数据库连接等。 src/test/java
目录用于存放单元测试和集成测试的代码。
- 配置文件
- Spring Boot 支持多种配置文件格式,如
properties
和yaml
。 - application.properties
- 这是一种传统的配置文件格式,以键值对的形式配置属性。例如,配置服务器端口:
server.port = 8080
;配置数据库连接:spring.datasource.url=jdbc:mysql://localhost:3306/mydb
。
- 这是一种传统的配置文件格式,以键值对的形式配置属性。例如,配置服务器端口:
- application.yml
- 这是一种更具可读性的配置文件格式,使用缩进表示层次结构。例如:
- Spring Boot 支持多种配置文件格式,如
收起
yaml
复制
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
- 配置文件中的属性可以通过
@Value
注解或者Environment
接口在 Java 代码中获取和使用。例如:
收起
java
复制
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class MyConfig {
@Value("${server.port}")
private int port;
// 可以在这里使用port变量进行相关操作
}
- 注解
- @SpringBootApplication
- 这是一个组合注解,它包含了
@SpringBootConfiguration
、@EnableAutoConfiguration
和@ComponentScan
。 @SpringBootConfiguration
表明这个类是一个配置类,可以用于定义 Bean 等配置操作。@EnableAutoConfiguration
开启自动配置功能,@ComponentScan
用于扫描组件,默认会扫描当前包及其子包下的@Component
、@Service
、@Repository
、@Controller
等注解标注的类。
- 这是一个组合注解,它包含了
- @RestController
- 用于标注一个类,使其成为一个 RESTful 风格的控制器。它是
@Controller
和@ResponseBody
的组合注解,意味着这个类中的方法返回值会直接作为 HTTP 响应的内容,而不是视图名称。例如:
- 用于标注一个类,使其成为一个 RESTful 风格的控制器。它是
- @SpringBootApplication
收起
java
复制
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
- @Service
- 用于标注服务层的类,表示这是一个业务逻辑组件。例如,一个处理用户业务逻辑的类可以用
@Service
标注:
- 用于标注服务层的类,表示这是一个业务逻辑组件。例如,一个处理用户业务逻辑的类可以用
收起
java
复制
import org.springframework.stereotype.Service;
@Service
public class UserService {
// 业务逻辑方法
}