Spring Boot 简介

3 阅读2分钟

1-1 Spring Boot 简介

概念解析

什么是 Spring Boot?

Spring Boot 是 Pivotal 团队基于 Spring 框架开发的开箱即用的快速应用开发框架,旨在简化 Spring 应用的初始搭建和开发过程。

核心特性

特性说明
自动配置根据依赖自动配置 Bean
起步依赖通过 starter 简化依赖管理
内嵌容器内置 Tomcat/Jetty/Undertow
健康检查提供应用健康监控
外部化配置支持多种配置文件格式

Spring Boot vs 传统 SSM

对比项传统 SSMSpring Boot
配置方式XML 大量配置YAML/Properties 少量配置
依赖管理手动管理版本起步依赖自动管理
部署方式WAR 包到外部容器JAR 包内嵌容器
开发效率配置繁琐开箱即用

代码示例

创建一个 Spring Boot 项目

1. Maven pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- 继承 Spring Boot 父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.0</version>
        <relativePath/>
    </parent>

    <groupId>com.example</groupId>
    <artifactId>springboot-demo</artifactId>
    <version>1.0.0</version>

    <properties>
        <java.version>17</java.version>
    </properties>

    <!-- Web 开发起步依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- Maven 打包插件 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2. 启动类

package com.example.demo;

@SpringBootApplication
public class SpringBootApplication {

    public static void main(String[] args) {
        // 启动 Spring Boot 应用
        SpringApplication.run(SpringBootApplication.class, args);
    }
}

3. 配置文件 application.yml

server:
  port: 8080
  servlet:
    context-path: /api

spring:
  application:
    name: springboot-demo

4. 编写 Controller

@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public Result<User> getUser(@PathVariable Long id) {
        return Result.success(new User(id, "张三", 25));
    }
}

常见坑点

⚠️ 坑 1:启动类位置问题

问题:Component scan 找不到 Bean

原因:启动类默认只扫描同包及子包下的组件

解决

// 方式一:确保启动类在最外层
// com.example.demo.SpringBootApplication
//   ↓
// com.example.demo.controller.UserController ✓

// 方式二:指定扫描路径
@SpringBootApplication(scanBasePackages = "com.example")
public class SpringBootApplication { }

⚠️ 坑 2:主类与配置文件同名冲突

问题:启动时报找不到 main class

解决:确保 pom.xml 中主类配置正确

<properties>
    <start-class>com.example.demo.SpringBootApplication</start-class>
</properties>

面试题

Q1:Spring Boot 的核心注解是哪个?

参考答案

@SpringBootApplication 是 Spring Boot 的核心注解,它是一个组合注解,包含三个主要注解:

@SpringBootApplication
// 等价于
@Configuration    // 标识为配置类
@EnableAutoConfiguration  // 启用自动配置
@ComponentScan            // 组件扫描

Q2:Spring Boot 为什么能零配置运行?

参考答案

  1. 起步依赖:starter 会传递引入所有必要依赖
  2. 自动配置:Spring Boot 根据 classpath 中的 jar 自动配置
  3. 约定优于配置:遵循默认约定,减少显式配置
  4. 内嵌容器:无需部署到外部服务器

Q3:Spring Boot 和 Spring MVC 的区别?

参考答案

维度Spring MVCSpring Boot
定位Web 框架应用框架
配置大量 XML/Java Config自动配置
依赖手动引入起步依赖
部署WAR 到 TomcatJAR 内嵌容器
监控无内置Actuator 端点

关系:Spring Boot 是 Spring 生态的上层封装,底层仍然是 Spring MVC