gpt4 book ai didi

java - Spring中DataBinder和ConversionService的区别

转载 作者:搜寻专家 更新时间:2023-10-31 20:05:25 26 4
gpt4 key购买 nike

在将 Web 请求绑定(bind)到模型对象方面,我对 Spring 的 DataBinder 和 ConversionService 的使用和目的感到有些困惑。这是因为我最近尝试通过添加来使用 JSR-303 验证。

在此之前我使用:

<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="mypackage.GlobalWebBindingInitializer" />
</property>
</bean>

这很好,因为我想要一个可以被多个 Controller 使用的全局 DataBinder。在 GlobalWebBindingInitialzer 类中实现其中的几个:

binder.registerCustomEditor(MyClass.class, new PropertyEditorSupport(MyClass.class)

但是我想使用@Valid 注解,所以添加了。这样做的副作用是上面的 AnnotationMethodHandlerAdapter bean 已经被定义为注释驱动的一部分,因此我的全局数据绑定(bind)器被忽略了。

所以现在我创建了这个类:

public class MyClassConverter implements Converter<String, MyClass>

我很困惑。如果我想使用,我应该使用转换服务而不是数据绑定(bind)器吗?

最佳答案

历史上,Spring 的数据绑定(bind)用于将数据转换为 javabean。它严重依赖 JavaBean PropertyEditors 来进行转换。

Spring 3.0 added new and different support用于转换和格式化。一些更改包括“core.convert”包和“格式”包,根据文档“可以用作 PropertyEditors 的更简单替代品。”

现在,回答您的问题,是的,看起来您的方向是对的。您可以继续使用其中任何一种,但长话短说,在许多情况下,您应该能够使用转换器而不是数据绑定(bind)器。

关于如何添加验证的文档 is available online .

关于java - Spring中DataBinder和ConversionService的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9174048/

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