java – Spring @Validated在服务层
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring @Validated在服务层,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1950字,纯文字阅读大概需要3分钟。
内容图文
![java – Spring @Validated在服务层](/upload/InfoBanner/zyjiaocheng/710/cf142242a6fb44f7a274c0e4a78f8e41.jpg)
HEJ,
我想在执行如下方法之前使用@Validated(group = Foo.class)注释来验证参数:
public void doFoo(Foo @Validated(groups=Foo.class) foo){}
当我将此方法放在我的Spring应用程序的Controller中时,执行@Validated并在Foo对象无效时抛出错误.但是,如果我在应用程序的Service层中的方法中放置相同的东西,则不执行验证,即使Foo对象无效,该方法也会运行.
你不能在服务层使用@Validated注释吗?或者我是否必须配置额外的东西以使其工作?
更新:
我在service.xml中添加了以下两个bean:
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>
并用@Null替换@Validate,如下所示:
public void doFoo(Foo @Null(groups=Foo.class) foo){}
我知道这是一个非常愚蠢的注释,但我想检查一下,如果我现在调用该方法并传递null,它将抛出违规异常.那么为什么它执行@Null注释而不是@Validate注释呢?我知道一个是来自javax.validation而另一个来自Spring,但我不认为这与它有什么关系?
解决方法:
在Spring MVC堆栈的眼中,没有服务层这样的东西.它适用于@Controller类处理程序方法的原因是Spring使用一个名为ModelAttributeMethodProcessor的特殊HandlerMethodArgumentResolver,它在解析要在处理程序方法中使用的参数之前执行验证.
我们称之为服务层,它只是一个普通的bean,没有从MVC(DispatcherServlet)堆栈中添加任何额外的行为.因此,您不能指望Spring的任何验证.你需要自己动手,可能是AOP.
使用MethodValidationPostProcessor,查看javadoc
Applicable methods have JSR-303 constraint annotations on their
parameters and/or on their return value (in the latter case specified
at the method level, typically as inline annotation).Validation groups can be specified through Spring’s Validated
annotation at the type level of the containing target class, applying
to all public service methods of that class. By default, JSR-303 will
validate against its default group only.
@Validated注释仅用于指定验证组,它本身不会强制进行任何验证.您需要使用其中一个javax.validation注释,如@Null或@Valid.请记住,您可以在方法参数上使用任意数量的注释.
内容总结
以上是互联网集市为您收集整理的java – Spring @Validated在服务层全部内容,希望文章能够帮你解决java – Spring @Validated在服务层所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。