温馨提示×

温馨提示×

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

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

java Parameter参数如何校验

发布时间:2026-10-04 08:28:34 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

在 Java 中,“Parameter 参数校验”通常指**方法参数(Method Parameter)或接口请求参数(如 Controller 参数)**的校验。下面按常见场景给你系统讲一下。


一、最基础:手动校验(不推荐但直观)

public void setAge(int age) {
    if (age < 0 || age > 150) {
        throw new IllegalArgumentException("年龄不合法");
    }
}

✅ 简单直接
❌ 重复代码多、不易维护


二、Spring / Jakarta 注解校验(最常用 ✅)

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

引入依赖(Spring Boot)

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

在参数上使用注解

@PostMapping("/user")
public String addUser(
    @RequestParam @NotBlank String name,
    @RequestParam @Min(0) @Max(150) int age
) {
    return "ok";
}

⚠️ 注意:@RequestParam 参数需要类上加 @Validated

@RestController
@Validated
public class UserController {}

2️⃣ 校验对象参数(DTO)

public class UserDTO {
    @NotBlank
    private String name;

    @Min(0)
    @Max(150
    private int age;
}
@PostMapping("/user")
public String addUser(@Valid @RequestBody UserDTO dto) {
    return "ok";
}

❌ 不加 @Valid → 不生效


三、常用校验注解

注解 说明
@NotNull 不能为 null
@NotBlank 字符串非空且去空格后不为空
@NotEmpty 集合 / 数组 / 字符串不为空
@Min / @Max 数值范围
@Size 长度 / 大小
@Pattern 正则
@Email 邮箱
@Positive 正数

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

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}$");
    }
}

五、方法级别参数校验(Service 层)

@Service
@Validated
public class UserService {
    public void create(@NotBlank String name) {}
}

⚠️ 必须加 @Validated,否则不生效


六、异常如何处理?

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public String handleValid(MethodArgumentNotValidException e) {
        return e.getBindingResult().getFieldError().getDefaultMessage();
    }
}

七、总结建议

✅ Controller 参数 → @Validated + 注解
✅ DTO → @Valid
✅ 复杂规则 → 自定义注解
❌ 不要在业务里大量 if-else


如果你是 Spring Boot / Spring MVC / 普通 Java 方法 / RPC 参数 哪种场景,可以告诉我,我可以给你更精确的示例。

向AI问一下细节

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

AI
助
手