温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Parameter参数怎么校验

发布时间:2026-09-13 13:55:58 来源:亿速云 阅读:95 作者:小樊 栏目:编程语言

在 Java 里,“Parameter 参数校验”通常指方法参数(接口/函数入参)的合法性校验。常见做法有以下几种,从简单到规范逐步升级:


一、最基础:手动 if 校验(适合小项目/工具类)

public void createUser(String name, int age) {
    if (name == null || name.isEmpty()) {
        throw new IllegalArgumentException("name 不能为空");
    }
    if (age < 0 || age > 150) {
        throw new IllegalArgumentException("age 不合法");
    }
    // 业务逻辑
}

✅ 简单直接
❌ 代码冗余、不易维护


二、Spring 项目:@Valid / @Validated(最常用)

1️⃣ 在 Controller 层校验请求参数

@PostMapping("/user")
public void createUser(@Valid @RequestBody UserDTO user) {
    // 校验通过后才会进来
}

2️⃣ DTO 中使用注解

public class UserDTO {
    @NotBlank(message = "用户名不能为空")
    private String name;

    @Min(0)
    @Max(150)
    private int age;
}

3️⃣ 校验失败处理(全局异常)

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public String handleValid(Exception e) {
        return "参数错误:" + e.getMessage();
    }
}

✅ 标准、清晰、企业级
✅ 支持分组校验、嵌套校验


三、Service 层参数校验:@Validated

@Service
@Validated
public class UserService {

    public void test(@NotBlank String name) {
    }
}

⚠️ 注意:

  • @Validated 用在 类上
  • 方法参数上可用 @NotBlank@Min

四、自定义校验注解(进阶)

1️⃣ 定义注解

@Target({FIELD})
@Retention(RUNTIME)
@Constraint(validatedBy = PhoneValidator.class)
public @interface Phone {
    String message() default "手机号格式错误";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

2️⃣ 校验逻辑

public class PhoneValidator implements ConstraintValidator<Phone, String> {
    public boolean isValid(String value, ConstraintValidatorContext ctx) {
        return value != null && value.matches("^1[3-9]\\d{9}$");
    }
}

五、断言工具(简化代码)

Spring 自带

Assert.notNull(name, "name 不能为空");

Hutool

AssertUtil.notBlank(name);

六、总结建议

场景 推荐方式
Controller 入参 @Valid + DTO
Service 方法 @Validated
复杂规则 自定义注解
工具/底层 手动 if / Assert

如果你愿意,可以告诉我:

  • Spring Boot 还是 普通 Java
  • Controller / Service / 工具方法
  • 想校验 对象 / 基本类型 / List

我可以直接给你一套可复制的代码模板。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI