Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java注解校验参数是否为空


在 Java 中,您可以使用注解来校验方法参数是否为空。以下是几种常见的实现方式,每种方式都包含了详细的步骤流程、依赖和示例代码。

注意:以下示例中使用的依赖版本可能会有更新,请根据实际情况进行调整。

使用 Java Bean Validation(JSR 380)和 Hibernate Validator

Java Bean Validation 是 Java 规范,而 Hibernate Validator 则是 Bean Validation 的一个实现。

步骤流程:

添加 Maven 依赖(或在 Gradle 中添加相应依赖):

Maven 依赖:

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.0.Final</version>
</dependency>

Gradle 依赖:

implementation 'org.hibernate.validator:hibernate-validator:6.2.0.Final'

创建一个参数校验的 POJO 类,其中使用注解来定义校验规则。

import javax.validation.constraints.NotBlank;

public class MyRequest {
    @NotBlank(message = "Name cannot be blank")
    private String name;

    // Getter and Setter
}

在方法参数中使用校验注解。

import javax.validation.Valid;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @PostMapping("/validate")
    public String validateInput(@Valid @RequestBody MyRequest request) {
        // 执行方法逻辑
        return "Success";
    }
}

使用 Spring 的 @NotNull 和 @Validated 注解

Spring 框架提供了一些方便的注解来进行参数校验。

步骤流程:

添加 Spring Boot Starter 依赖(已包含 Hibernate Validator)。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

在方法参数上使用 @NotNull 注解进行非空校验。

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Validated
public class MyController {

    @PostMapping("/validate")
    public String validateInput(@NotNull(message = "Name cannot be null") String name) {
        // 执行方法逻辑
        return "Success";
    }
}

使用 AspectJ 和自定义注解

这种方式使用了 AspectJ 切面编程来实现自定义的参数校验。

步骤流程:

添加 AspectJ 依赖。

Maven 依赖:

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>1.9.7</version>
</dependency>

Gradle 依赖:

implementation 'org.aspectj:aspectjrt:1.9.7'

创建一个自定义注解和切面类。

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface NotEmpty {
    String message() default "Parameter cannot be empty";
}
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class NotEmptyAspect {

    @Before("@annotation(notEmpty) && args(.., @NotEmpty (*), ..)")
    public void beforeMethod(NotEmpty notEmpty) {
        // 执行校验逻辑
        // 若参数为空,抛出异常
    }
}

在方法参数上使用自定义注解。

@RestController
public class MyController {

    @PostMapping("/validate")
    public String validateInput(@NotEmpty String name) {
        // 执行方法逻辑
        return "Success";
    }
}

这些是几种校验方法参数是否为空的实现方式。您可以根据项目需求选择合适的方式进行参数校验。每种方式都有其适用场景和优缺点,根据实际情况做出选择。

示例代码:###方法二:使用ApacheCommonsCodec库ApacheCommonsCodec库提供了Checksum类来计算各种校 ...
在Django中,isnull是一个查询条件,用于在数据库查询中检查某个字段是否为空(null)。如果你的字段在数据库中没有设置为允许为空( ...
Lombok(ProjectLombok)是一个Java库,它通过注解来简化Java代码的编写,减少样板代码,提高代码的可读性和可维护性。@ ...
在Java中使用EasyExcel库来校验每行结果并将结果写回Excel,你可以通过以下几种方式来实现。yml`文件中配置文件上传路径:这些 ...
###方法一:使用equals方法这是最常见的字符串比较方式,可以使用字符串的`equals`方法来比较两个字符串是否相同。示例代码:### ...