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 应用到复杂的微服务架构,都能发挥其优势。

相关推荐
虾球xz4 分钟前
游戏引擎学习第137天
人工智能·学习·游戏引擎
计算机-秋大田1 小时前
基于Spring Boot的企业车辆管理系统设计与实现(LW+源码+讲解)
java·vue.js·spring boot·后端·spring·课程设计
汇匠源1 小时前
Java Spring Boot 外卖系统,构建便捷的本地生活服务
java·spring boot·生活
ysy16480672391 小时前
Javase学习复习D4[流程控制]
学习
薛定谔的码*1 小时前
学习工具的一天之(burp)
学习
ooo-p1 小时前
FPGA学习篇——Verilog学习4
学习·fpga开发
爱编程的王小美1 小时前
从0学习Spark
大数据·学习·spark
weixin_502539852 小时前
rust学习笔记12-hashmap与1. 两数之和
笔记·学习·rust
Nijika...2 小时前
MySQL学习笔记(2)并发问题与事务隔离级别
笔记·学习·mysql
L73S372 小时前
C/C++输入输出(1)
c++·笔记·学习·考研·蓝桥杯