1.1 什么是Spring Boot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

核心特性

  1. 自动配置(Auto Configuration)

    • 根据类路径中的jar包、类,为jar包里的类自动配置Bean
    • 大大减少了配置工作
  2. 起步依赖(Starter Dependencies)

    • 将常用的依赖分组进行了整合,称为Starter
    • 一个Starter就是一个依赖坐标的集合
  3. 内嵌服务器

    • 内嵌Tomcat、Jetty或Undertow服务器
    • 无需部署WAR文件
  4. 生产就绪特性

    • 提供监控、健康检查、外部化配置等功能

1.2 Spring Boot的优势

开发效率提升

  • 快速启动:最小化配置,快速搭建项目
  • 约定优于配置:遵循约定,减少配置文件
  • 自动配置:智能的默认配置

部署简化

  • 独立运行:内嵌服务器,jar包直接运行
  • 云原生:天然支持容器化部署
  • 微服务友好:轻量级,适合微服务架构

生产特性

  • 监控指标:内置Actuator监控
  • 健康检查:应用健康状态检测
  • 外部化配置:灵活的配置管理

1.3 Spring Boot与传统Spring的对比

特性 传统Spring Spring Boot
配置方式 XML配置文件 自动配置+注解
依赖管理 手动管理版本 Starter统一管理
服务器 外部Tomcat 内嵌服务器
部署方式 WAR包部署 JAR包运行
开发效率 配置繁琐 开箱即用

1.4 Spring Boot核心注解

@SpringBootApplication

这是Spring Boot的核心注解,它是一个组合注解,包含:

@SpringBootConfiguration  // 标识为配置类
@EnableAutoConfiguration  // 启用自动配置
@ComponentScan           // 组件扫描
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

常用注解说明

  1. @RestController

    • 组合了@Controller和@ResponseBody
    • 用于创建RESTful Web服务
  2. @RequestMapping

    • 映射HTTP请求到处理方法
    • 可以指定请求方法、路径等
  3. @Autowired

    • 自动装配Bean
    • 可以用在字段、方法、构造器上
  4. @Service、@Repository、@Component

    • 标识不同层的组件
    • 用于自动扫描和注册Bean

1.5 Spring Boot的工作原理

启动流程

  1. 创建SpringApplication实例

    SpringApplication app = new SpringApplication(Application.class);
    
    1. 运行SpringApplication java app.run(args);
  2. 自动配置生效

    • 扫描类路径下的jar包
    • 根据条件注解决定是否生效
    • 创建和配置Bean

自动配置原理

@ConditionalOnClass(DataSource.class)
@ConditionalOnMissingBean(DataSource.class)
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {
    
    @Bean
    @ConditionalOnProperty(name = "spring.datasource.url")
    public DataSource dataSource(DataSourceProperties properties) {
        return DataSourceBuilder.create()
            .url(properties.getUrl())
            .username(properties.getUsername())
            .password(properties.getPassword())
            .build();
    }
}

条件注解

  • @ConditionalOnClass:类路径存在指定类时生效
  • @ConditionalOnMissingBean:容器中不存在指定Bean时生效
  • @ConditionalOnProperty:配置文件中存在指定属性时生效
  • @ConditionalOnWebApplication:Web应用时生效

1.6 Spring Boot项目结构

标准项目结构

src/
├── main/
│   ├── java/
│   │   └── com/example/demo/
│   │       ├── DemoApplication.java     # 启动类
│   │       ├── controller/              # 控制器层
│   │       ├── service/                 # 服务层
│   │       ├── repository/              # 数据访问层
│   │       ├── entity/                  # 实体类
│   │       └── config/                  # 配置类
│   └── resources/
│       ├── application.yml              # 配置文件
│       ├── static/                      # 静态资源
│       └── templates/                   # 模板文件
└── test/
    └── java/
        └── com/example/demo/
            └── DemoApplicationTests.java # 测试类

配置文件

Spring Boot支持多种配置文件格式:

application.properties

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=123456

application.yml

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo
    username: root
    password: 123456

1.7 Spring Boot Starter

常用Starter

Starter 功能
spring-boot-starter-web Web开发
spring-boot-starter-data-jpa JPA数据访问
spring-boot-starter-data-redis Redis缓存
spring-boot-starter-security 安全框架
spring-boot-starter-test 测试框架
spring-boot-starter-actuator 监控和管理

自定义Starter

创建自定义Starter的步骤:

  1. 创建自动配置类

    @Configuration
    @ConditionalOnClass(MyService.class)
    @EnableConfigurationProperties(MyProperties.class)
    public class MyAutoConfiguration {
    
    
    @Bean
    @ConditionalOnMissingBean
    public MyService myService(MyProperties properties) {
        return new MyService(properties);
    }
    }
    
    1. 创建配置属性类 java @ConfigurationProperties(prefix = "my.service") public class MyProperties { private String name = "default"; private int timeout = 30; // getters and setters }
  2. 创建spring.factories文件

    # META-INF/spring.factories
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    com.example.MyAutoConfiguration
    

    1.8 Spring Boot的生态系统

    Spring Cloud

    • 微服务开发工具集

    • 服务发现、配置管理、断路器等

      Spring Data

    • 数据访问抽象

    • 支持JPA、MongoDB、Redis等

      Spring Security

    • 安全框架

    • 认证、授权、防护等

      Spring Batch

    • 批处理框架

    • 大数据量处理

      1.9 版本选择和兼容性

      版本命名规则

    • 主版本号:重大架构变更

    • 次版本号:新功能添加

    • 修订版本号:Bug修复

      LTS版本

    • Spring Boot 2.7.x(LTS)

    • Spring Boot 3.x(最新)

      Java版本兼容性

      Spring Boot版本 Java版本
      2.x Java 8+
      3.x Java 17+

      1.10 学习路径建议

      基础阶段

    1. Spring框架基础

    2. Maven/Gradle构建工具

    3. Spring Boot核心概念

      进阶阶段

    4. Spring Boot Web开发

    5. 数据访问和持久化

    6. 安全和认证

      高级阶段

    7. 微服务架构

    8. 云原生开发

    9. 性能优化和监控

      总结

      Spring Boot通过约定优于配置的理念,大大简化了Spring应用的开发。它提供了自动配置、起步依赖、内嵌服务器等特性,让开发者能够快速构建生产级别的应用。 在接下来的章节中,我们将深入学习Spring Boot的各个方面,从环境搭建到实际项目开发,逐步掌握这个强大的框架。