springboot2.3之后hibernate-validator依赖缺失【踩坑】

当使用Spring Boot 2.3及以上版本时,可能会遇到hibernate-validator依赖缺失的问题。这是因为Spring Boot 2.3移除了hibernate-validator依赖,而将其替换为了jakarta.validation依赖。因此,在使用hibernate-validator时,需要手动添加jakarta.validation依赖。

以下是解决这个问题的步骤:

步骤一:添加jakarta.validation依赖

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.glassfish.jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
    <version>3.0.0</version>
</dependency>

这将会添加jakarta.validation-api依赖到项目中。接下来,需要将hibernate-validator依赖替换为jakarta.validation依赖。

步骤二:替换依赖

找到你的项目中的hibernate-validator依赖,并将其替换为jakarta.validation-api依赖。

以下是一个完整的pom.xml文件示例:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.3.1.RELEASE</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <!-- Spring Boot Web Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- 添加jakarta.validation依赖 -->
    <dependency>
        <groupId>org.glassfish.jakarta.validation</groupId>
        <artifactId>jakarta.validation-api</artifactId>
        <version>3.0.0</version>
    </dependency>

    <!-- 替换hibernate-validator依赖为jakarta.validation依赖 -->
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>7.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator-cdi</artifactId>
        <version>7.0.1.Final</version>
    </dependency>
</dependencies>

示例1:使用@RequestParam注解参数校验

假设我们有一个接口,接受一个字符串类型的参数,我们使用@RequestParam注解来获取参数,并做校验。使用过程中可能会遇到以下错误:

java.lang.NoSuchMethodError: javax.validation.Validation.byDefaultProvider()Ljavax/validation/Configuration;

通过添加jakarta.validation依赖和替换hibernate-validator依赖的操作,可以解决这个问题。以下是一个正确的例子:

@RestController
public class DemoController {

    @GetMapping("/test")
    public String test(@RequestParam @NotEmpty String name) {
        return "Hello, " + name;
    }
}

在上述例子中,我们使用了@RequestParam注解获取参数,并使用@NotEmpty注解来做参数的非空校验。这将会确保传入的参数不为空。

示例2:使用validation-api进行参数校验

在一些情况下,我们可能需要更加复杂的参数校验。我们可以通过使用validation-api来实现这个功能。以下是一个例子:

@RestController
public class DemoController {

    @PostMapping("/test")
    public String test(@Valid @RequestBody DemoRequest request) {
        return "Hello, " + request.getName();
    }

    static class DemoRequest {

        @NotEmpty
        private String name;

        @Min(18)
        private Integer age;

        // get, set 省略
    }
}

在上述例子中,我们通过使用@Valid注解来对DemoRequest进行参数校验。在DemoRequest中,我们使用@NotEmpty和@Min注解来做参数的非空校验和最小值校验。这将会确保传入的参数不为空,并且年龄大于等于18岁。

以上就是关于“springboot2.3之后hibernate-validator依赖缺失【踩坑】”的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot2.3之后hibernate-validator依赖缺失【踩坑】 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java中Scanner输入用法实例

    Java中Scanner输入用法实例 Scanner类介绍 Scanner类是Java.util中的一个类,用于接收用户从键盘输入的数据,将输入的数据转换为相应的数据类型。 Scanner使用方法 导包 Scanner所在的包是java.util,所以用到Scanner时要导入该包。 import java.util.Scanner; 创建Scanner对象…

    Java 2023年5月26日
    00
  • Java与C++实现相同的MD5加密算法简单实例

    Java与C++实现相同的MD5加密算法简单实例 简介 MD5加密算法是一种常见的数据加密算法,通常用于安全性要求比较高的场景中,比如密码加密,数据传输等。Java和C++都有现成的MD5加密算法库,本文将介绍如何通过两种语言来实现相同的MD5加密算法。 Java实现 在Java中,可以通过Java.security包中的MessageDigest类来实现M…

    Java 2023年5月19日
    00
  • SpringMVC KindEditor在线编辑器之文件上传代码实例

    下面我就针对“SpringMVC KindEditor在线编辑器之文件上传代码实例”的完整攻略进行详细的讲解: 具体操作步骤 步骤一:引入相关依赖 在SpringMVC项目的pom.xml文件中加入以下代码: <!– 文件上传依赖 –> <dependency> <groupId>commons-fileupload&…

    Java 2023年6月2日
    00
  • 带你一文深入认识Java String类

    带你一文深入认识Java String类 1. 什么是Java String类 Java String类是Java编程语言中最常用的类之一。它用于处理字符串,是一个不可变的类,即一旦一个字符串被创建,它就不能被修改。String类提供了许多方法来操作字符串。 2. 如何创建Java字符串 可以通过两种方式创建Java字符串: 2.1 直接赋值创建字符串 St…

    Java 2023年5月26日
    00
  • JavaBeans程序开发

    JavaBeans程序开发攻略 什么是JavaBeans JavaBeans是Java语言编写的可重用组件,用于构建应用程序。JavaBeans遵循特定的设计模式和规范,通常包含一个无参构造器和一些getter和setter方法,使它们易于使用和维护。 开发JavaBeans的步骤 定义JavaBean的类和属性 为属性添加对应的getter和setter方…

    Java 2023年5月23日
    00
  • Maven打包上云的实现步骤

    下面我将为你详细讲解”Maven打包上云的实现步骤”的完整攻略。 一、背景介绍 随着云计算和微服务的兴起,很多应用都开始在云上部署和运行。为了方便在云上部署和管理应用,我们往往需要将应用打包成云原生的镜像,并通过容器技术进行部署。在Java应用中,我们可以使用Maven工具来进行应用的打包和构建。 二、Maven打包步骤 Maven是一个开源的项目管理工具,…

    Java 2023年5月19日
    00
  • JAVA验证码工具实例代码

    JAVA验证码工具实例代码完整攻略 验证码是一种用来区分人类和计算机的一种技术,通常应用于网站注册、登录等场景中。在JAVA中,我们可以借助一些工具来实现验证码的生成和验证,下面我们就来了解一下。 验证码工具的选择 JAVA中有很多开源的验证码工具,常见的有Kaptcha、JCaptcha等。这里我们介绍一种比较常用的JAVA验证码工具——JCaptcha。…

    Java 2023年6月15日
    00
  • Java ArrayList扩容机制原理深入分析

    Java ArrayList扩容机制原理深入分析 在 Java 中,ArrayList 是一种动态数组,它可以自动扩容以适应数据的增长。了解 ArrayList 扩容机制的原理,有助于我们更好地理解和使用 ArrayList,提高代码效率。 ArrayList 扩容机制 ArrayList 内部使用数组来存储元素,当向 ArrayList 中添加元素时,如果…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部