java - 我可以创建 spring mvc 自定义验证注释而不链接到 validator 实现吗

标签 java spring spring-boot spring-mvc

我有 Spring Boot 自定义约束注释:

@Documented
@Constraint(validatedBy = ?)
@Target( { ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomValidation {

    String message() default "";

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

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

还有我在单独的公共(public)项目中使用它的 dtos。我将此项目包含到另一个 Spring Boot 项目中,我计划在其中为此注释提供真正的 validator 实现。此注释用 @Constraint 进行注释,我需要在其中传递 validator 实现(并且我不能像之前描述的那样执行此操作)。

我的问题是如何在没有实际实现的情况下创建此 validator 注释并稍后将其添加到另一个项目中。

最佳答案

如果它是一个复杂的 validator ,则无法做到这一点 - 只能通过 validator 的实现来实现。 但如果您的注释是其他标准 validator 的聚合器,您可以指定它们并且不添加实现。

例如,注释应验证电子邮件而不是空白:

@Documented
@Constraint(validatedBy = {})
@Retention(RetentionPolicy.RUNTIME)
@Email(message = "{email.invalid}")
@NotBlank(message = "{email.blank}")
@Target({ElementType.PARAMETER, ElementType.FIELD})
@Size(max = 128, message = "{email.oversize}")
public @interface EmailPattern {

    String message() default "Invalid, empty or long email";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

关于java - 我可以创建 spring mvc 自定义验证注释而不链接到 validator 实现吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768017/

相关文章:

Java集合: checking object property

java - 使用 Maven 在 IntelliJ 中构建本地和生产环境

Spring框架中的Java配置

java - 使用 Spring Boot 的角色层次结构和 OAuth2 安全性

java - Spring Boot 实体的自定义自动配置

java - 短信如何存储在手机中?

java - 日文字符的正则表达式

java - 将 OpenTelemetry 跟踪数据从 Spring Boot 应用程序导入 Elastic APM - View 缺少数据

java - 是否可以检测应用程序的退出?

java - Spring Rest Docs 片段模板被忽略