当前位置: 首页 > 知识库问答 >
问题:

在服务层使用Spring对组进行Bean验证

洪昱
2023-03-14

我正在使用Spring-3.1.0.ga开发一个服务(不是web应用程序)。我想使用hibernate-validator和Spring来验证我的服务输入。

我启用了bean验证支持:

<bean id="validator"
      class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>

<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>

我已经用@validated和@notnull、@size、@valid等方法参数注释了我的服务接口,它工作得很好。

我不能在接口级别注释@validate(group1.class),因为各种方法对各种组进行操作。

如何使用具有组支持的Spring和hibernate-validator执行服务层验证?

共有1个答案

谷玉韵
2023-03-14

我已经了解了Spring源代码,以及为什么没有选择方法参数上的验证组...根据代码,它只是从接口级别上的@Validated选择验证组配置,而不是方法级别上的。

但是我还没有了解它是如何在SpringMVC上下文中工作的,我还没有检查。

在这个过程中,我还了解到,如果您在子应用程序上下文中配置MethodValidationPostProcessor,它不会被Spring拾取。我的意思是,如果您使用的是SpringMVC,那么只有在[servlet-name]-servlet.xml中配置了MethodValidationPostProcessor,才会注册MethodValidationPostProcessor。如果您在ContextLoaderListener选择的任何子上下文配置文件中进行配置,Spring不会注册MethodValidationPostProcessor。此外,我不确定它只适用于MethodValidationPostProcessor,或者适用于任何BeanPostProcessors。

 类似资料:
  • 我正在用Kotlin做一个Spring Boot项目。 目前我正在尝试编写单元测试,因此我使用Mockk,尤其是springmockk。 这是我的RecipeService类: 我的测试类看起来像这样: 当试图在我的服务中注入模拟存储库时,我会遇到以下问题: 组织。springframework。豆。工厂UnsatifiedPendencyException:创建名为“nl”的bean时出错。wh

  • 我在Azure中设置了两个应用程序服务。”父级和子级都公开APIendpoint。 子节点有endpointGet。 父节点有endpoint“获取”和“获取儿童”(使用HttpClient在儿童上调用“获取”)。 我希望所有子endpoint都需要通过托管身份和AAD进行身份验证,并且我希望所有父endpoint都允许匿名。但是在Azure中,我希望将父应用服务设置为具有调用子应用服务的权限。因

  • 问题内容: 我正在编写一个要求用户登录的Spring Web应用程序。我公司有一个Active Directory服务器,我想将其用于此目的。但是,我在使用Spring Security连接服务器时遇到了麻烦。 我正在使用Spring 2.5.5和Spring Security 2.0.3,以及Java 1.6。 如果我将LDAP URL更改为错误的IP地址,它不会引发异常或任何异常,因此我想知道

  • 但是,当我执行以下测试时,不会引发验证异常: 当保存一个已经持久化的对象时,我如何使验证器触发器?最好是通过Java配置。 我的验证依赖项:

  • 我过去认为,在分层应用程序(控制器或服务)中,将验证逻辑放在何处并不重要,但最近正在开发需要事务的服务(使用spring)。Spring使用方面创建代理,Spring代码如下所示: org.springframework.transaction.interceptor.事务支持 所以从我这里看到的,spring首先打开事务,然后执行代码。考虑到验证可能会失败,并且根本不需要DB调用,这是否意味着将

  • GoogleCredential凭证=newGoogleCredential.Builder(). setTransfer(TRANSPORT). setJsonFactory(JSON_FACTORY). setServiceAccount tId("SOMETHING@developer.gserviceaccount.com"). setServiceAccount tScopes(Bigq