栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在dropwizard中使用自定义验证器?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在dropwizard中使用自定义验证器?

这很简单。自从我写下示例以来,我将在这里粘贴示例,并且我很懒惰,不想带走您的有趣经历:)

编辑:我认为您的问题是您没有使用@Valid注释资源

所以我们开始:

您与验证者的关系正确。这些是我的:

public class CustomValidator implements ConstraintValidator<CustomValidation, String> {    @Override    public void initialize(CustomValidation constraintAnnotation) {    }    @Override    public boolean isValid(String value, ConstraintValidatorContext context) {        System.out.println("Validation called");        return false;    }}

这是注释:

@Constraint(validatedBy = {CustomValidator.class})@Target({ElementType.FIELD, ElementType.PARAMETER})@Retention(value = RetentionPolicy.RUNTIME)public @interface CustomValidation {      String message() default "Some message";      Class<?>[] groups() default {};      Class<? extends Payload>[] payload() default {};}

应用程序:

public class Application extends io.dropwizard.Application<Configuration>{    @Override    public void run(Configuration configuration, Environment environment) throws Exception {        MetricRegistry metrics = environment.metrics();        environment.jersey().register(new HelloResource(metrics));    }    public static void main(String[] args) throws Exception {        new Application().run("server", "/home/artur/dev/repo/sandbox/src/main/resources/config/test.yaml");    }}

和资源:

@Path("/test")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_JSON)public class HelloResource {    private MetricRegistry service;    public HelloResource(MetricRegistry service) {        this.service = service;    }    @GET    public String hello() {        Timer timer = service.timer("test");        try(Context t = timer.time()) { return "Hello World";        }    }    @GET    @Path("/test2")    public void test(@Valid @CustomValidation @QueryParam("arg") String test) {        System.out.println(test);    }}

不要介意这些指标,它们与之无关。重要的是,您需要告诉DW您想要验证的内容。

在资源中,请参阅测试方法。我用@Valid(告诉DW进行验证)@CustomValidation(告诉DW使用什么验证器)注释我需要的参数。

这实际上不是Dropwizard的功能,而是休眠验证器的实现。

它的幕后工作方式是休眠通过调用构造函数在请求时动态创建Validator类。现在,如果您具有简单的验证(例如说比较字符串),则此方法就很好了。如果您需要依赖项,那么它将变得更加棘手。

本示例使用guice,但它演示了如何将自己的创建机制挂接到验证中。这样,您可以控制验证器的创建并将其注入或初始化为数据源以访问数据库。

我希望能回答您的问题,



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418595.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号