gpt4 book ai didi

java - Spring 是否生成验证代码?

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

最近我试图了解spring如何处理@Valid注解。例如,看看以下 Controller 的方法:

@RequestMapping(value = "/create", method = RequestMethod.POST)
public ModelAndView createEmployee(@Valid EmployeeForm form, Errors errors) {
if(errors.hasErrors()) {
//validation errors
}
//method code
}

我正在努力理解 errors 实例如何实时填充验证错误。 Spring在 Controller 编译期间是否会在createEmployee方法的开头注入(inject)负责验证的代码?如果是这样,这段代码会是什么样子?

我确实试图找到一个例子来说明如何在现实生活中执行此验证,但这是不可能的。请帮助我。

最佳答案

一切都发生在运行时。请参阅reference有关进行验证的更多详细信息或 this post以获得额外的解释。

基本上,这是 Spring 内部工作方式的一部分。当您启动应用程序时,Spring 会注册一些 bean、bean 处理器,可以扫描您的类路径以查找带注释的类,注册那些找到的带注释的类,为其中一些类构建代理等,并使用它们来构建上下文。

处理请求时,请求在以 DispatcherServlet 开头的某个预定执行路径上进行处理,根据需要从上下文中获取其他 bean 来处理请求(例如验证),然后在 createEmployee 中转发到您的 Controller (它被注册为启动,因为 Spring 在您的 Controller 上找到了您的 @RequestMapping 注释)。当您从该方法返回时,流程将继续构建模型,选择要显示的 View ,然后生成对客户端的响应。

对于您的示例,Spring 基本上会找到 @Valid 注释,查找已配置的 validator (由您配置或由提供的实现(例如 JSR-303)配置),运行 validator 并存储Errors 对象内的验证结果。它在处理请求时执行此操作,如上所述,它不会生成代码。

如果您的问题是确切了解 Spring 是如何做到这一点的,以及所有细节,您可以获取 Spring 源代码并查看/调试它。

关于java - Spring 是否生成验证代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24467092/

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