美文网首页
springboot dubbo3 学习-集成Validatio

springboot dubbo3 学习-集成Validatio

作者: 草祭木初 | 来源:发表于2025-01-22 08:59 被阅读0次

版本
spring boot: 3.4.1
dubbo:3.3.1
java17

官方文档

1,Maven 引入

用这个

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

不要用这个,会出现死循环的问题,具体原因不详,大概率是版本冲突

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

2,开启验证功能

全局开启,consumer端验证一定要开启,这样会提升新能也会免去一些麻烦

dubbo:
  provider:
    validation: true
  consumer:
    validation: true

通过注解开启

@DubboService(validation = "true")

@DubboReference(validation = "true")

3,接口定义

Validation的注解一定要写在接口上,否则不会起作用。
spring boot的可以写在实现类上。

public interface ITestConsumerSevice {

    String testv(@NotNull String userId);
}

4,自定义验证注解

注解

@Target({
        ElementType.METHOD,
        ElementType.FIELD,
        ElementType.ANNOTATION_TYPE,
        ElementType.CONSTRUCTOR,
        ElementType.PARAMETER,
        ElementType.TYPE_USE
})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(
        validatedBy = MobileValidator.class
)
public @interface Mobile {

    String message() default "手机号格式不正确";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

}

验证类

public class MobileValidator implements ConstraintValidator<Mobile, String> {

    @Override
    public void initialize(Mobile annotation) {
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        // 如果手机号为空,默认不校验,即校验通过
        if (StrUtil.isEmpty(value)) {
            return true;
        }
        // 校验手机
        return ValidationUtils.isMobile(value);
    }

}

使用

public interface ITestConsumerSevice {

    String testv(@Mobile String userId);
}

可以参照这篇文章

5,全局异常处理

因为Validation 验证失败后直接抛出异常,所以我们需要统一处理一下
参照:springboot dubbo3 学习-全局异常处理过滤器

相关文章

网友评论

      本文标题:springboot dubbo3 学习-集成Validatio

      本文链接:https://www.haomeiwen.com/subject/xbxcujtx.html