gpt4 book ai didi

java - 在服务层中使用 Spring 进行 Bean 验证

转载 作者:行者123 更新时间:2023-12-02 07:48:31 24 4
gpt4 key购买 nike

我正在使用 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 注释了我的服务接口(interface),并使用 @NotNull、@Size、@Valid 等注释了方法参数,并且工作正常。

但是我必须根据验证组验证我的参数(例如客户)。如果我用 @Validated 或 @Validated(Group1.class) 注释方法参数,Spring 不会执行任何验证。

如果我用 @Valid 进行注释,则验证将会发生,但使用默认验证组(如预期)。

我无法在接口(interface)级别注释@Validate(Group1.class),因为各种方法在不同的组上运行。

如何使用 Spring 和 hibernate-validator 以及组支持来执行服务层验证?

最佳答案

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

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

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

关于java - 在服务层中使用 Spring 进行 Bean 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10532861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com