カスタムコンバーターでConversionService
を作成します。私はConversionServiceFactoryBean
を作成し、その上にコンバータを設定することにより、ConversionService
を作成しようとした別のquestionに触発さConversionServiceFactoryBeanまたはGenericConversionServiceを使用してカスタムコンバータを登録しますか?
:
@Bean
public ConversionService conversionService(
Set<Converter<?, ?>> converters,
ConversionServiceFactoryBean factory) {
factory.setConverters(converters);
return factory.getObject();
}
@Bean
public ConversionServiceFactoryBean conversionServiceFactoryBean() {
return new ConversionServiceFactoryBean();
}
Spring documentationはXMLで多かれ少なかれ同じことを示唆している:
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="example.MyCustomConverter"/>
</set>
</property>
</bean>
ConversionService
を設定すると、my caseでは機能しませんでした。私のクラスでautowired conversionService
を使用しようとしたときに、エラーが発生しました。
ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [java.time.Duration]
私はGenericConversionService
を使用して、それを私のコンバータを追加する必要がありました:
@Bean
public ConversionService conversionService(Set<Converter<?, ?>> converters) {
final GenericConversionService conversionService = new GenericConversionService();
converters.forEach(conversionService::addConverter);
return conversionService;
}
は、今では動作しますが、私はそれがConversionServiceFactoryBean
では動作しない理由を理解したいです。
なぜConversionServiceFactoryBean
とJavaの設定で動作しないのですか? GenericConversionService
とはなぜ同じですか?
私はまだ何が働いていないのかはわかりません。そのリンクの関連部分をここにあなたの質問に抽出してください。あなたが言及している失敗を示す[mcve]を提示してください。 –