SpringBoot 快速开发指南 
1. 项目简介 
本文基于一个完整的 SpringBoot + Vue 项目模板,介绍如何快速搭建现代化的 Web 应用。
项目资源:
- 开源地址:https://github.com/itbaima-study/SpringBoot-Vue-Template-Session
- 视频教程:https://www.bilibili.com/video/BV1rT411W7QM/
2. 技术栈选型 
2.1 核心组件 
在创建 SpringBoot 项目时,选择以下组件:
Developer Tools(开发工具):
- GraalVM Native Support - 原生镜像支持,可将应用编译为原生可执行文件,大幅提升启动速度和降低内存占用
- Lombok - 简化 Java 代码,自动生成 getter/setter、构造函数等
Web(Web 开发):
- Spring Web - 提供 RESTful API 开发能力,包括 Spring MVC、Tomcat 等
SQL(数据库):
- Spring Data JDBC - 简化的数据库访问框架
- MyBatis - 灵活的持久层框架
- MySQL Driver - MySQL 数据库驱动
Security(安全):
- Spring Security - 提供认证和授权功能
2.2 额外依赖 
除了 Spring Initializr 提供的组件,还需要添加以下依赖:
xml
<dependencies>
    <!-- MySQL 连接器 -->
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>
    
    <!-- FastJSON2 - 高性能 JSON 处理库 -->
    <dependency>
        <groupId>com.alibaba.fastjson2</groupId>
        <artifactId>fastjson2</artifactId>
        <version>2.0.53</version>
    </dependency>
</dependencies>3. 项目结构 
3.1 典型的 SpringBoot 项目结构 
text
src/
├── main/
│   ├── java/
│   │   └── com/
│   │       └── example/
│   │           └── demo/
│   │               ├── DemoApplication.java      # 启动类
│   │               ├── controller/               # 控制器层
│   │               │   └── UserController.java
│   │               ├── service/                  # 业务逻辑层
│   │               │   ├── UserService.java
│   │               │   └── impl/
│   │               │       └── UserServiceImpl.java
│   │               ├── mapper/                   # 数据访问层
│   │               │   └── UserMapper.java
│   │               ├── entity/                   # 实体类
│   │               │   └── User.java
│   │               ├── dto/                      # 数据传输对象
│   │               │   └── UserDTO.java
│   │               ├── vo/                       # 视图对象
│   │               │   └── UserVO.java
│   │               ├── config/                   # 配置类
│   │               │   └── SecurityConfig.java
│   │               └── utils/                    # 工具类
│   │                   └── JwtUtils.java
│   └── resources/
│       ├── application.yml                       # 配置文件
│       ├── application-dev.yml                   # 开发环境配置
│       ├── application-prod.yml                  # 生产环境配置
│       ├── mapper/                               # MyBatis 映射文件
│       │   └── UserMapper.xml
│       └── static/                               # 静态资源
└── test/                                          # 测试代码4. 核心配置 
4.1 application.yml 配置 
yaml
spring:
  application:
    name: demo-app
  
  # 数据源配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/demo_db?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8
    username: root
    password: password
  
  # JPA 配置
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  
  # 文件上传配置
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB
# MyBatis 配置
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.example.demo.entity
  configuration:
    map-underscore-to-camel-case: true
# 服务器配置
server:
  port: 8080
  servlet:
    context-path: /api4.2 多环境配置 
开发环境 application-dev.yml:
yaml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo_dev
logging:
  level:
    com.example.demo: DEBUG生产环境 application-prod.yml:
yaml
spring:
  datasource:
    url: jdbc:mysql://prod-server:3306/demo_prod
logging:
  level:
    com.example.demo: INFO激活配置文件:
yaml
spring:
  profiles:
    active: dev  # 或 prod5. 快速开发实例 
5.1 实体类 
java
import lombok.Data;
import java.util.Date;
@Data
public class User {
    private Long id;
    private String username;
    private String password;
    private String email;
    private Date createTime;
    private Date updateTime;
}5.2 Mapper 接口 
java
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(Long id);
    
    List<User> findAll();
    
    int insert(User user);
    
    int update(User user);
    
    int deleteById(Long id);
}5.3 Service 层 
java
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    
    public User getUserById(Long id) {
        return userMapper.findById(id);
    }
    
    public List<User> getAllUsers() {
        return userMapper.findAll();
    }
    
    public boolean createUser(User user) {
        return userMapper.insert(user) > 0;
    }
    
    public boolean updateUser(User user) {
        return userMapper.update(user) > 0;
    }
    
    public boolean deleteUser(Long id) {
        return userMapper.deleteById(id) > 0;
    }
}5.4 Controller 层 
java
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;
    
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUserById(id);
    }
    
    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }
    
    @PostMapping
    public boolean createUser(@RequestBody User user) {
        return userService.createUser(user);
    }
    
    @PutMapping
    public boolean updateUser(@RequestBody User user) {
        return userService.updateUser(user);
    }
    
    @DeleteMapping("/{id}")
    public boolean deleteUser(@PathVariable Long id) {
        return userService.deleteUser(id);
    }
}6. 统一响应格式 
6.1 响应实体类 
java
import lombok.Data;
@Data
public class Result<T> {
    private Integer code;
    private String message;
    private T data;
    
    public static <T> Result<T> success(T data) {
        Result<T> result = new Result<>();
        result.setCode(200);
        result.setMessage("成功");
        result.setData(data);
        return result;
    }
    
    public static <T> Result<T> error(String message) {
        Result<T> result = new Result<>();
        result.setCode(500);
        result.setMessage(message);
        return result;
    }
}6.2 使用统一响应 
java
@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;
    
    @GetMapping("/{id}")
    public Result<User> getUser(@PathVariable Long id) {
        User user = userService.getUserById(id);
        return Result.success(user);
    }
    
    @PostMapping
    public Result<Void> createUser(@RequestBody User user) {
        boolean success = userService.createUser(user);
        return success ? Result.success(null) : Result.error("创建失败");
    }
}7. 异常处理 
7.1 全局异常处理器 
java
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class GlobalExceptionHandler {
    
    @ExceptionHandler(Exception.class)
    public Result<Void> handleException(Exception e) {
        e.printStackTrace();
        return Result.error("系统错误:" + e.getMessage());
    }
    
    @ExceptionHandler(IllegalArgumentException.class)
    public Result<Void> handleIllegalArgument(IllegalArgumentException e) {
        return Result.error("参数错误:" + e.getMessage());
    }
}8. Spring Security 配置 
8.1 基础安全配置 
java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
    
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .csrf().disable()
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/api/public/**").permitAll()
                .anyRequest().authenticated()
            )
            .formLogin()
            .and()
            .logout();
        
        return http.build();
    }
}9. 运行与测试 
9.1 启动应用 
bash
# 使用 Maven
mvn spring-boot:run
# 使用 Gradle
gradle bootRun
# 直接运行 JAR
java -jar demo-app.jar9.2 测试 API 
使用 curl 测试:
bash
# 获取用户列表
curl http://localhost:8080/api/users
# 获取单个用户
curl http://localhost:8080/api/users/1
# 创建用户
curl -X POST http://localhost:8080/api/users \
  -H "Content-Type: application/json" \
  -d '{"username":"test","password":"123456","email":"test@example.com"}'10. 参考资料 
- https://spring.io/projects/spring-boot - Spring Boot 官方文档
- https://mybatis.org/mybatis-3/zh/index.html - MyBatis 中文文档
- https://projectlombok.org/ - Lombok 文档
- https://github.com/alibaba/fastjson2 - FastJSON2 项目