在Spring MVC堆栈的眼中,没有诸如服务层之类的东西。它适用于
@Controller类处理程序方法的原因是,Spring使用了一个特殊的
HandlerMethodArgumentResolver调用
ModelAttributeMethodProcessor,该调用在解析要在处理程序方法中使用的参数之前执行验证。
我们称之为服务层,只是一个普通的bean,没有从MVC(
DispatcherServlet)堆栈中添加任何其他行为。因此,你不能期望Spring进行任何验证。你可能需要使用AOP自己滚动。
用
MethodValidationPostProcessor,看看javadoc
适用的方法在其参数和/或它们的返回值上具有JSR-303约束注释(在后一种情况下在方法级别指定,通常作为内联注释)。
可以通过Spring的Validated注释在包含的目标类的类型级别上指定验证组,并将其应用于该类的所有公共服务方法。默认情况下,JSR-303将仅针对其默认组进行验证。
该@Validated注释仅用于指定验证组,它本身并不强迫任何验证。你需要使用一种
javax.validation注释,例如@
Null或
@Valid。请记住,你可以在方法参数上使用任意数量的注释。



