Spring Boot

一、Spring Boot 简介

Spring Boot 是基于 Spring 框架之上的快速开发框架,旨在简化 Spring 应用的构建过程,让开发者更专注于业务逻辑,而不是繁琐的配置。

特点:

  • 自动配置(Auto Configuration)

  • 起步依赖(Starter Dependencies)

  • 内嵌式服务器(如 Tomcat)

  • 无需大量 XML 配置

  • 配置灵活(支持 application.properties / application.yml


二、环境准备

1. 开发工具

  • IDE:IntelliJ IDEA(推荐)

  • JDK:Java 8 或更高版本

  • 构建工具:Maven 或 Gradle

  • 数据库:MySQL(或 H2 作为内嵌数据库)

2. 创建项目

推荐使用 Spring 官方提供的 Spring Initializr 来快速生成项目结构。


三、项目结构说明

复制代码
src
 └── main
     ├── java
     │   └── com.example.demo
     │       ├── controller
     │       ├── service
     │       ├── repository
     │       └── DemoApplication.java
     └── resources
         ├── application.yml
         ├── static/
         └── templates/

四、核心注解介绍

注解 说明
@SpringBootApplication 核心注解,包含 @Configuration@EnableAutoConfiguration@ComponentScan
@RestController 组合注解,包含 @Controller + @ResponseBody
@RequestMapping 用于请求路径映射
@Autowired 自动注入依赖
@Service / @Repository 标识服务层 / 数据访问层 Bean

五、配置文件说明(application.yml)

复制代码
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo
    username: root
    password: root
  thymeleaf:
    cache: false
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

六、核心功能实战

1. Web 接口开发

Controller 示例:

复制代码
@RestController
@RequestMapping("/api")
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}

2. 服务层(Service)

复制代码
@Service
public class UserService {
    public String getUserInfo() {
        return "用户信息";
    }
}

3. 数据访问层(Repository)

使用 Spring Data JPA:

复制代码
public interface UserRepository extends JpaRepository<User, Long> {}

七、常用模块

1. Spring Boot + MyBatis

  • 添加依赖:

    org.mybatis.spring.boot mybatis-spring-boot-starter 2.3.1
  • Mapper 接口 + XML 配置

2. Spring Boot + Thymeleaf

用于构建前端模板页面:

复制代码
@Controller
public class PageController {
    @GetMapping("/home")
    public String home(Model model) {
        model.addAttribute("msg", "欢迎!");
        return "home";
    }
}

八、定时任务实现

复制代码
@Component
public class ScheduledTasks {
    @Scheduled(cron = "0/10 * * * * ?")
    public void reportCurrentTime() {
        System.out.println("现在时间:" + new Date());
    }
}
  • 启动类中添加:@EnableScheduling

九、异常处理机制

复制代码
@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handle(Exception e) {
        return ResponseEntity.status(500).body("服务器异常:" + e.getMessage());
    }
}

十、打包部署

使用 Maven 打包:

复制代码
mvn clean package

运行 Jar:

复制代码
java -jar target/demo-0.0.1-SNAPSHOT.jar

十一、常见问题与调试技巧

  • 端口被占用? 修改 application.yml 中的 server.port

  • 404 页面? 检查路径是否映射正确

  • 自动配置失效? 查看是否存在 @SpringBootApplication@ComponentScan 被覆盖的问题

  • 调试 SQL? 开启 spring.jpa.show-sql=true


十二、进阶学习建议

  • 学习 Spring Boot 与 SSM 的整合

  • 理解 Spring Boot 自动配置原理(查看源码:spring-boot-autoconfigure

  • 深入使用 AOP、缓存、消息队列(RabbitMQ/Kafka)

  • 掌握 Spring Cloud 微服务架构

相关推荐
陈随易1 小时前
编程语言级别的Skill市场,AI Agent 的未来形态
前端·后端·程序员
IT_陈寒4 小时前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰4 小时前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
用户8356290780515 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
小满zs5 小时前
Go语言第二章(小无相功)
后端·go
用户8356290780515 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
karry_k5 小时前
MyBatis批量insert-select踩坑:useGeneratedKeys=true 可能让PostgreSQL返回大量插入结果
java·后端
妙码生花5 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
贰先生5 小时前
Xiuno BBS X版 用户封禁系统
后端
karry_k5 小时前
PostgreSQL 在 MyBatis 中执行正常 SQL 失效:一次 DELETE USING 踩坑记录
java·后端