【问题标题】:Inbound http message validation with JSR303使用 JSR303 验证入站 http 消息
【发布时间】:2020-03-10 20:16:19
【问题描述】:

我正在使用 Spring Integration 接收 http 消息,然后将其放入通道并进行一些转换。

我阅读了文档 (https://docs.spring.io/spring-integration/reference/html/http.html),它看起来像:

@Bean
public HttpRequestHandlingMessagingGateway inbound() {
    HttpRequestHandlingMessagingGateway gateway =
        new HttpRequestHandlingMessagingGateway(true);
    gateway.setRequestMapping(mapping());
    gateway.setRequestPayloadType(SomeBean.class);
    gateway.setRequestChannelName("httpRequest");
    return gateway;
}

我想使用 JSR 303 bean 验证 (https://beanvalidation.org/1.0/spec/) 来验证有效负载,可以吗?最好的方法是什么?

提前致谢!

【问题讨论】:

    标签: spring spring-integration spring-integration-http


    【解决方案1】:

    有一个关于验证的专门段落:https://docs.spring.io/spring-integration/reference/html/http.html#http-validation。所以,你只需要使用那个网关的setValidator()

    /**
    
     * Specify a {@link Validator} to validate a converted payload from request.
    
     * @param validator the {@link Validator} to use.
    
     * @since 5.2
    
     */
    
    public void setValidator(Validator validator) {
    
        this.validator = validator;
    
    }
    

    验证 API 来自 Spring Framework:https://docs.spring.io/spring/docs/5.2.4.RELEASE/spring-framework-reference/core.html#validation

    【讨论】:

    • 我读过!但那是 Spring Validator,而不是 JSR303 验证器。
    • 看起来你没有走得太远:docs.spring.io/spring/docs/5.2.4.RELEASE/…。请参阅 LocalValidatorFactoryBean 及其 JavaDocs:` * 这是 Spring 中 {@code javax.validation} (JSR-303) 设置的中心类`。不知道你为什么认为我们谈论不同的方法...... Spring 只是提供了自己的抽象,其中一个实现确实是针对该 JSR-303
    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 2021-11-12
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多