java 注解 payload_spring – 如何使用注释配置PayloadValidatingInterceptor

项目结构(和配置类名称)与本教程中提到的相同.

我试图使用注释做所有可能的配置,并希望避免所有基于xml的配置.到目前为止,我甚至通过使用java配置避免了applicationContext.xml和web.xml.但是,现在我想引入XSD验证,如本教程所示:

http://stack-over-flow.blogspot.com/2012/03/spring-ws-schema-validation-using.html,即通过扩展PayloadValidatingInterceptor类.如教程所示,然后需要使用以下xml配置注册此自定义验证器拦截器:

但是,我没有起诉如何使用注释进行上述配置.即将XSD文件设置为拦截器.我试过覆盖WsConfigurerAdaptor类的“addInterceptor”来注册拦截器.如果我需要这样做,或者使用注释完成整个事情的正确方法,请告诉我.

最佳答案 我正在使用spring-boot,我正在寻找一种方法来做同样的事情,我发现了这个:

@EnableWs

@Configuration

public class WebServiceConfig extends WsConfigurerAdapter {

@Override

public void addInterceptors(List interceptors) {

PayloadValidatingInterceptor validatingInterceptor = new PayloadValidatingInterceptor();

validatingInterceptor.setValidateRequest(true);

validatingInterceptor.setValidateResponse(true);

validatingInterceptor.setXsdSchema(resourceSchema());

interceptors.add(validatingInterceptor);

}

@Bean

public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {

MessageDispatcherServlet servlet = new MessageDispatcherServlet();

servlet.setApplicationContext(applicationContext);

servlet.setTransformWsdlLocations(true);

return new ServletRegistrationBean(servlet, "/api/*");

}

@Bean(name = "registros")

public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema countriesSchema) {

DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();

wsdl11Definition.setPortTypeName("ResourcePort");

wsdl11Definition.setLocationUri("/api");

wsdl11Definition.setTargetNamespace("http://resource.com/schema");

wsdl11Definition.setSchema(resourceSchema());

return wsdl11Definition;

}

@Bean

public XsdSchema resourceSchema() {

return new SimpleXsdSchema(new ClassPathResource("registro.xsd"));

}

}

在此示例中,addInterceptors方法很重要,其他3方法是公开WSDL API的基础.

也许这对其他人有用.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值