Spring Boot 学习笔记

文章目录

    • [一、Spring Boot 简介](#一、Spring Boot 简介)
    • [二、Spring Boot 的优势](#二、Spring Boot 的优势)
    • [三、Spring Boot 的核心组件](#三、Spring Boot 的核心组件)
      • [1. Spring Boot Starter](#1. Spring Boot Starter)
      • [2. 自动配置](#2. 自动配置)
      • [3. 嵌入式容器](#3. 嵌入式容器)
      • [4. Actuator](#4. Actuator)
    • [四、Spring Boot 的开发流程](#四、Spring Boot 的开发流程)
      • [1. 创建项目](#1. 创建项目)
      • [2. 配置文件](#2. 配置文件)
      • [3. 编写代码](#3. 编写代码)
      • [4. 运行应用](#4. 运行应用)
    • [五、Spring Boot 的常用注解](#五、Spring Boot 的常用注解)
      • [1. `@SpringBootApplication`](#1. @SpringBootApplication)
      • [2. `@EnableAutoConfiguration`](#2. @EnableAutoConfiguration)
      • [3. `@ComponentScan`](#3. @ComponentScan)
      • [4. `@Configuration`](#4. @Configuration)
      • [5. `@RestController`](#5. @RestController)
      • [6. `@Service`](#6. @Service)
      • [7. `@Repository`](#7. @Repository)
      • [8. `@Controller`](#8. @Controller)
    • [六、Spring Boot 的最佳实践](#六、Spring Boot 的最佳实践)
      • [1. 使用 Profile](#1. 使用 Profile)
      • [2. 使用日志](#2. 使用日志)
      • [3. 使用异常处理](#3. 使用异常处理)
      • [4. 使用测试](#4. 使用测试)
    • 七、总结

一、Spring Boot 简介

Spring Boot 是由 Pivotal 团队开发的开源 Java 基础框架,用于简化 Spring 应用的开发过程。通过 Spring Boot,开发者可以轻松创建独立、生产级的 Spring 应用,而无需繁琐的配置和部署步骤。Spring Boot 内嵌了 Tomcat、Jetty 等主流 Web 容器,支持自动配置和依赖管理,极大地提高了开发效率。

二、Spring Boot 的优势

  1. 快速开发:Spring Boot 提供了开箱即用的功能,开发者只需专注于业务逻辑,而无需过多关注配置和依赖问题。
  2. 简化配置:通过自动配置机制,Spring Boot 能够根据项目中的依赖自动配置 Spring 应用,减少了大量的 XML 或 Java 配置代码。
  3. 独立运行 :Spring Boot 应用可以打包为一个独立的 JAR 文件,直接通过 java -jar 命令运行,无需额外的 Web 容器。
  4. 社区支持:Spring Boot 拥有活跃的社区和丰富的插件生态,开发者可以轻松找到解决方案和扩展功能。
  5. 微服务支持:Spring Boot 与 Spring Cloud 等微服务框架无缝集成,适合构建微服务架构的应用。

三、Spring Boot 的核心组件

1. Spring Boot Starter

Spring Boot Starter 是一组依赖管理的集合,开发者可以通过引入特定的 Starter 来快速集成各种功能模块。例如:

  • spring-boot-starter-web:用于构建 Web 应用,包含 Tomcat 和 Spring MVC。
  • spring-boot-starter-data-jpa:用于数据库操作,支持 JPA 和 Hibernate。
  • spring-boot-starter-security:用于安全控制,支持 Spring Security。
  • spring-boot-starter-test:用于测试,包含 JUnit 和 Mockito 等测试框架。

2. 自动配置

Spring Boot 的自动配置机制是其核心特性之一。通过 @EnableAutoConfiguration 注解,Spring Boot 会根据项目中的依赖和配置自动加载相应的配置类。开发者可以通过自定义配置文件(application.propertiesapplication.yml)来覆盖默认配置。

3. 嵌入式容器

Spring Boot 内嵌了多种主流 Web 容器,如 Tomcat、Jetty 和 Undertow。开发者无需额外安装和配置容器,只需引入相应的依赖即可。例如:

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>

4. Actuator

Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用的工具集。通过 Actuator,开发者可以轻松获取应用的运行状态、健康状况、度量信息等。常用的 Actuator 端点包括:

  • /actuator/health:显示应用的健康状态。
  • /actuator/metrics:显示应用的度量信息。
  • /actuator/env:显示应用的环境信息。
  • /actuator/shutdown:关闭应用。

四、Spring Boot 的开发流程

1. 创建项目

Spring Boot 项目可以通过以下两种方式创建:

  1. 使用 Spring Initializr :Spring 官方提供的在线项目初始化工具,地址为 https://start.spring.io/。开发者可以选择需要的依赖,生成项目结构。
  2. 使用 IDE:如 IntelliJ IDEA 或 Eclipse,内置了 Spring Boot 项目创建模板,开发者可以直接选择依赖并生成项目。

2. 配置文件

Spring Boot 的配置文件主要有两种格式:application.propertiesapplication.yml。配置文件用于定义应用的运行参数,如端口号、数据库连接信息等。例如:

application.properties

properties 复制代码
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=123456

application.yml

yaml 复制代码
server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: 123456

3. 编写代码

Spring Boot 的核心是 @SpringBootApplication 注解,该注解包含了 @EnableAutoConfiguration@ComponentScan@Configuration 三个注解,用于启用自动配置、扫描组件和定义配置类。一个典型的 Spring Boot 应用结构如下:

java 复制代码
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

4. 运行应用

Spring Boot 应用可以通过以下方式运行:

  1. 使用 IDE :如 IntelliJ IDEA 或 Eclipse,直接运行 main 方法。
  2. 使用 Maven 或 Gradle :通过 mvn spring-boot:rungradle bootRun 命令运行。
  3. 打包运行 :将应用打包为 JAR 文件,通过 java -jar myapp.jar 命令运行。

五、Spring Boot 的常用注解

1. @SpringBootApplication

@SpringBootApplication 是 Spring Boot 的核心注解,包含了 @EnableAutoConfiguration@ComponentScan@Configuration 三个注解,用于启用自动配置、扫描组件和定义配置类。

2. @EnableAutoConfiguration

@EnableAutoConfiguration 注解用于启用 Spring Boot 的自动配置机制。通过该注解,Spring Boot 会根据项目中的依赖和配置自动加载相应的配置类。

3. @ComponentScan

@ComponentScan 注解用于扫描项目中的组件(如 @Component@Service@Repository@Controller 等),并将它们注册为 Spring 容器中的 Bean。

4. @Configuration

@Configuration 注解用于定义一个配置类,通常用于定义 Bean 或配置属性。

5. @RestController

@RestController 注解用于定义一个 RESTful 控制器,包含了 @Controller@ResponseBody 两个注解,用于处理 HTTP 请求并返回 JSON 数据。

6. @Service

@Service 注解用于定义一个服务类,通常用于处理业务逻辑。

7. @Repository

@Repository 注解用于定义一个数据访问类,通常用于操作数据库。

8. @Controller

@Controller 注解用于定义一个 MVC 控制器,用于处理 HTTP 请求并返回视图。

六、Spring Boot 的最佳实践

1. 使用 Profile

Spring Boot 支持多环境配置,通过 application-{profile}.propertiesapplication-{profile}.yml 文件可以定义不同环境的配置。例如:

  • application-dev.properties:开发环境配置。
  • application-test.properties:测试环境配置。
  • application-prod.properties:生产环境配置。

通过设置 spring.profiles.active 参数可以激活指定的环境配置:

properties 复制代码
spring.profiles.active=dev

2. 使用日志

Spring Boot 默认使用 Logback 作为日志框架,开发者可以通过配置文件自定义日志级别和输出格式。例如:

properties 复制代码
logging.level.root=INFO
logging.level.org.springframework.web=DEBUG
logging.file.name=myapp.log

3. 使用异常处理

Spring Boot 提供了全局异常处理机制,通过 @ControllerAdvice 注解可以定义全局异常处理器。例如:

java 复制代码
@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception e) {
        return new ResponseEntity<>("An error occurred: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

4. 使用测试

Spring Boot 提供了丰富的测试支持,通过 spring-boot-starter-test 依赖可以使用 JUnit 和 Mockito 进行单元测试和集成测试。例如:

java 复制代码
@SpringBootTest
public class MyServiceTest {
    @Autowired
    private MyService myService;

    @Test
    public void testMyService() {
        assertEquals("expected result", myService.doSomething());
    }
}

七、总结

Spring Boot 是一个功能强大且易于使用的框架,通过简化配置和依赖管理,极大地提高了开发效率。通过学习 Spring Boot 的核心概念、开发流程和最佳实践,开发者可以快速构建高效、可靠的 Spring 应用。Spring Boot 适用于各种规模的项目,从简单的 Web 应用到复杂的微服务架构,都能发挥其优势。

相关推荐
齐生17 小时前
iOS 知识点 - 渲染机制、动画、卡顿小集合
笔记
用户9623779544814 小时前
VulnHub DC-1 靶机渗透测试笔记
笔记·测试
用户908324602732 天前
Spring AI 1.1.2 + Neo4j:用知识图谱增强 RAG 检索(上篇:图谱构建)
java·spring boot
齐生12 天前
iOS 知识点 - IAP 是怎样的?
笔记
tingshuo29172 天前
D006 【模板】并查集
笔记
用户8307196840822 天前
Spring Boot 集成 RabbitMQ :8 个最佳实践,杜绝消息丢失与队列阻塞
spring boot·后端·rabbitmq
Java水解2 天前
Spring Boot 视图层与模板引擎
spring boot·后端
Java水解2 天前
一文搞懂 Spring Boot 默认数据库连接池 HikariCP
spring boot·后端
洋洋技术笔记3 天前
Spring Boot Web MVC配置详解
spring boot·后端
tingshuo29173 天前
S001 【模板】从前缀函数到KMP应用 字符串匹配 字符串周期
笔记