SpringBoot3-从环境搭建到异常处理的完整指南

前言

SpringBoot作为Java领域最流行的微服务框架,其3.0版本带来了许多令人兴奋的新特性。本文将详细介绍如何从零开始搭建一个SpringBoot3项目,并实现常见的开发需求,包括Maven配置、Web开发、异常处理等核心功能。

一、开发环境准备

1.1 软件要求

  • IDEA: 2023及以上版本(推荐使用IntelliJ IDEA Ultimate)

  • Maven: 3.6.3及以上版本

  • JDK: 21(SpringBoot3要求至少JDK17)

  • 前置知识: JavaSE、JavaWeb基础

1.2 环境验证

安装完成后,请确保在命令行中能正确执行以下命令:

bash

复制

下载

java -version
mvn -v

二、创建SpringBoot3工程

2.1 通过IDEA创建项目

  1. 打开IDEA,选择"New Project"

  2. 选择"Spring Initializr"

  3. 配置项目基本信息:

    • Group: com.black

    • Artifact: black

    • Type: Maven

    • Java版本: 21

2.2 核心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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.0</version> <!-- 注意这里改为3.0.0 -->
        <relativePath/>
    </parent>
    
    <!-- 其他配置保持不变 -->
</project>

重要变更点

  • 将SpringBoot版本从2.7.9升级到3.0.0

  • 确保Java版本设置为21

三、Web开发基础

3.1 内置Tomcat

SpringBoot内置了Tomcat服务器,无需额外配置即可运行Web应用:

java

复制

下载

@RestController
@RequestMapping("/api")
public class TestController {
    
    @RequestMapping("/test")
    public Res test(@RequestBody User user) {
        return Res.success();
    }
}

3.2 统一响应封装

推荐使用统一的响应格式,便于前端处理:

java

复制

下载

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Res {
    private String code;
    private String message;
    private Object data;

    public static Res success() {
        return new Res(Constants.CODE_200, "", null);
    }

    public static Res success(Object data) {
        return new Res(Constants.CODE_200, "", data);
    }

    public static Res error() {
        return new Res(Constants.CODE_500, "系统错误", null);
    }

    public static Res error(String code, String message) {
        return new Res(code, message, null);
    }
}

四、高级配置

4.1 WebMvc配置

实现拦截器配置和资源放行:

java

复制

下载

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(jwtInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns(
                        "/auth/login",
                        "/auth/register",
                        "/swagger**/**",
                        "/webjars/**",
                        "/v2/**",
                        "/doc.html");
    }
    
    @Bean
    public JWTInterceptor jwtInterceptor() {
        return new JWTInterceptor();
    }
}

4.2 阿里云Maven仓库配置

加速依赖下载:

xml

复制

下载

运行

<repositories>
    <repository>
        <id>nexus-aliyun</id>
        <name>nexus-aliyun</name>
        <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

五、异常处理机制

5.1 全局运行时异常处理

java

复制

下载

@ControllerAdvice("com.black.controller")
public class GlobalExceptionHandler {
    
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Res handleException(Exception e) {
        e.printStackTrace();
        return Res.error();
    }
}

5.2 自定义业务异常

  1. 定义异常类:

java

复制

下载

@Getter
public class ServiceException extends RuntimeException {
    private final String code;
    
    public ServiceException(String code, String message) {
        super(message);
        this.code = code;
    }
}
  1. 异常处理器:

java

复制

下载

@ControllerAdvice
public class BusinessExceptionHandler {
    
    @ExceptionHandler(ServiceException.class)
    @ResponseBody
    public Res handleServiceException(ServiceException e) {
        return Res.error(e.getCode(), e.getMessage());
    }
}
  1. 使用示例:

java

复制

下载

@GetMapping("/user/{id}")
public Res getUser(@PathVariable Long id) {
    User user = userService.findById(id);
    if (user == null) {
        throw new ServiceException("404", "用户不存在");
    }
    return Res.success(user);
}

六、常用依赖说明

6.1 核心依赖

  • Web开发spring-boot-starter-web

  • 数据库:

    • mybatis-spring-boot-starter

    • spring-boot-starter-data-redis

  • 工具类hutool-all

6.2 辅助工具

  • JSON处理:

    • gson

    • fastjson

  • HTTP客户端:

    • okhttp

    • httpclient

  • 文档生成springfox-boot-starter

七、项目启动与测试

  1. 创建主启动类:

java

复制

下载

@SpringBootApplication
public class BlackApplication {
    public static void main(String[] args) {
        SpringApplication.run(BlackApplication.class, args);
    }
}
  1. 测试Controller:

java

复制

下载

@RestController
@RequestMapping("/test")
public class TestController {
    
    @GetMapping("/exception")
    public Res testException() {
        int i = 1 / 0; // 触发算术异常
        return Res.success();
    }
    
    @GetMapping("/business")
    public Res testBusiness() {
        throw new ServiceException("400", "业务异常示例");
    }
}

结语

本文详细介绍了SpringBoot3项目的搭建过程和核心功能实现。通过合理的项目结构设计和统一的异常处理机制,可以大大提高项目的可维护性和开发效率。SpringBoot3在性能、安全性和易用性方面都有显著提升,是开发现代Java Web应用的理想选择。

希望本文能帮助您快速上手SpringBoot3开发,如有任何问题,欢迎在评论区留言讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值