首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring5中的服务层bean验证?

Spring5中的服务层bean验证?
EN

Stack Overflow用户
提问于 2020-08-27 23:04:15
回答 1查看 443关注 0票数 2

我需要验证在Spring5应用程序中作为参数提供给服务层方法的bean。我可以让验证在控制器上工作,但是在服务层,@Valid注释被忽略了。服务类用@Validated注解,它的一个实例被自动连接到进行方法调用的控制器类中。

我需要在非Boot应用程序中执行此操作。我找到了一些说明,但它们是特定于Boot的。

我在这里遗漏了什么,为什么这可以在控制器上工作,而不能在控制器到服务层的调用上工作?基于一些谷歌搜索,在控制器级别上,这可能以某种方式连接到DispatcherServlet?

我需要做什么才能让它在服务层上工作?我之所以想在服务层这样做,是因为我们在其他应用程序(Jersey框架+较旧的Spring)的服务层上进行了验证,而其他应用程序则希望保持一致性。

EN

回答 1

Stack Overflow用户

发布于 2020-08-27 23:58:32

它适用于@Controller类处理程序方法的原因是,Spring使用了一个名为ModelAttributeMethodProcessor的特殊HandlerMethodArgumentResolver,它在解析要在处理程序方法中使用的参数之前执行验证

正如我们所说的,服务层只是一个普通的bean,没有额外的行为。

您可以显式使用SpringValidator

代码语言:javascript
复制
@Bean
public SpringValidator<ClassToValidate> springValidator() {
        SpringValidator<ActivityCsvDTO> springValidator = new SpringValidator<>();
        springValidator.setValidator(localValidatorFactoryBean());
        return springValidator;
    }

并直接调用validate()方法

代码语言:javascript
复制
    try {
     springValidator.validate(ObjectToValidate);
    } catch (Exception e) {
      return log.error("error validation", e);
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63618897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档