gpt4 book ai didi

java - 为什么每个请求都会调用@InitBinder 方法?

转载 作者:行者123 更新时间:2023-11-30 10:12:59 35 4
gpt4 key购买 nike

当我调试我的 Spring Boot 应用程序时,我注意到每个传入请求都会调用用 @InitBinder 注释的方法。

@InitBinder("categories")
public void bindFields(WebDataBinder binder) {
binder.registerCustomEditor(Set.class, new CustomPropertyEditor());
}

@InitBinder 方法中,我们将 PropertyEditor 设置为 Binder 。我不明白为什么要一次又一次地调用这些方法并设置相同的东西?
Spring 是否为每个请求创建一个新的 WebDataBinder 对象?

最佳答案

@InitBinder 的作用是识别用于初始化WebDataBinder 的方法。 Initbinder 通常用于将 requestParams 绑定(bind)到自定义对象。

假设您的 REST Controller 使用 @InitBinder 注释,在该 Controller 内处理的每个请求都将实例化 Initbinder,而 WebDatabinder 会将请求参数绑定(bind)到 JavaBean 对象。

它提供了分配我们的 validator 类的方法。使用 addValidators()setValidator() 方法,我们可以分配 validator 实例。

用例:假设 Sun,1 月 20 日在请求参数中,并且您希望每次都从请求参数中解析一个 LocalDate 对象。您可以在 WebDatabinder 中添加该解析器逻辑,并在每次发出请求时验证/解析该日期。

引用:What is the purpose of init binder in spring MVC

关于java - 为什么每个请求都会调用@InitBinder 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51568980/

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