gpt4 book ai didi

java - 如何避免 Spring ConversionService 中的重复转换器?

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

我有一个自定义的 StringToBooleanConverter 应该替换 Spring 附带的默认转换器。所以源和目标类型是完全一样的。但不是替换现有的 Spring 转换器,而是添加了我的转换器。如果我调试应用程序,我可以在 Map ConversionService#converters 的同一个映射条目中看到两个转换器。

ConversionService 配置如下:

@Bean
open fun conversionService(converters: Set<Converter<*, *>>) =
ConversionServiceFactoryBean().apply { setConverters(converters) }

@Bean
open fun stringToBooleanConverter() = MyStringToBooleanConverter()

// some more converters not relevant here ...

问题是有时会使用错误的转换器。

如何删除/替换/隐藏/停用 Spring 提供的转换器?

最佳答案

诀窍是定义一个自定义的ConversionServiceFactoryBean,覆盖方法createConversionService,并删除Spring本身注册的StringToBooleanConverter:

class ConversionServiceFactoryWithoutStringToBooleanConverter : ConversionServiceFactoryBean() {

override fun createConversionService(): GenericConversionService {
val conversionService = super.createConversionService()
conversionService.removeConvertible(String::class.java, java.lang.Boolean::class.java)
return conversionService
}
}

但是,在这种情况下,没有必要删除 Spring 转换器,因为如果某个源和目标类型有多个转换器,Spring 会按顺序尝试它们,并且用户注册的转换器排在第一位。促使我进行这项调查的行为实际上与另一个与 ConversionService 无关的错误有关。

关于java - 如何避免 Spring ConversionService 中的重复转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52389381/

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