1.Spring Boot 概述
Spring Boot 是一个基于 Spring 框架的开源项目,它旨在简化基于 Spring 的应用开发。通过使用 Maven 或 Gradle,Spring Boot 提供了自动配置、起步依赖(Starter Dependencies)等特性,极大地加速了 Spring 应用的开发、测试和部署过程。
2.Spring Boot 启动类注解 @SpringBootApplication
自动配置原理
@SpringBootApplication
是一个方便的注解,它包含了三个关键功能:
@SpringBootConfiguration
:表明该类是一个配置类,等同于 Spring 的@Configuration
注解。@EnableAutoConfiguration
:开启 Spring Boot 的自动配置特性。Spring Boot 会根据添加的 jar 包依赖来自动配置 Spring 应用。例如,如果 classpath 下存在spring-boot-starter-web
,Spring Boot 会自动配置 Tomcat 和 Spring MVC。@ComponentScan
:告诉 Spring 在包和子包中查找其他组件、配置和服务,自动注册它们为 Spring 应用上下文中的 bean。
3.Spring Boot 的运行方式
- 打包成可执行的 JAR/WAR 文件:使用 Maven 或 Gradle 打包应用,然后通过
java -jar
命令运行。 - 使用 Maven/Gradle 插件运行:直接在 IDE 中或通过命令行使用 Maven/Gradle 的
spring-boot:run
命令启动应用。 - 直接执行 main 方法:在 IDE 中直接运行包含
@SpringBootApplication
注解的类的 main 方法。
4.Spring Boot 管理事务的方式
Spring Boot 简化了事务管理,支持基于注解的事务管理。
- 注解方式:
- 在主启动类上添加
@EnableTransactionManagement
注解(实际上,如果你已经使用了@SpringBootApplication
,则不需要显式添加,因为它已经包含了@EnableTransactionManagement
)。 - 在需要事务控制的 service 类或方法上添加
@Transactional
注解。Spring 会在运行时自动地为这些方法提供事务支持。
- 在主启动类上添加
- XML 配置方式(不常用,但在一些老旧项目中可能见到):
- 通过配置
DataSourceTransactionManager
和transactionManager
bean 来实现。
- 通过配置
5.日志级别
Spring Boot 使用了 SLF4J 作为日志门面,并允许通过 application.properties
或 application.yml
文件配置日志级别。日志级别从低到高依次为:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。
- 如果设置为 WARN,则低于 WARN 的信息(如 TRACE、DEBUG、INFO)都不会输出。
- Spring Boot 默认使用 INFO 级别输出到控制台。
6.Spring Boot 全局异常处理
Spring Boot 支持通过 @ControllerAdvice
和 @ExceptionHandler
注解来全局处理异常。
- 全局异常处理类:使用
@ControllerAdvice
注解定义一个全局异常处理类。 - 捕获并处理异常:在类中定义一个或多个方法,并使用
@ExceptionHandler
注解来指定它们应该捕获哪些类型的异常。 - 自定义异常响应:在这些方法中,你可以根据捕获的异常类型来决定返回什么样的响应给客户端,包括错误码、错误信息和数据等。
7.面试相关补充
- Spring Boot Actuator:Spring Boot Actuator 提供了对应用监控和管理的端点(Endpoints),通过 HTTP、JMX 等方式暴露应用运行信息,如健康检查、环境变量、线程信息、日志级别调整等。
- Spring Profiles:允许你根据不同的环境(如开发、测试、生产)来定义不同的配置,提高了配置的灵活性和可管理性。
- Spring Boot 与微服务:Spring Boot 是构建微服务的理想选择,它提供了快速开发、易于部署和自动配置等特性,非常适合用于构建微服务架构。
- 安全性:Spring Boot 可以通过集成 Spring Security 来提供安全性支持,包括用户认证、授权、加密通信等。
- 性能测试:在面试中,面试官可能会询问你如何进行 Spring Boot 应用的性能测试,以及你熟悉的性能测试工具(如 JMeter、Gatling)。