オブジェクトのセットを変換するためのカスタムコンバーターを導入しようとしています->オブジェクト。私の Web 層では、ドメイン オブジェクト キーを含むコンマ (',') で区切られた文字列を取得します。
例えば
DB レコードがテーブル名に対して次のようになっている場合
ID名
1a
2b
テーブルに関連付けられたドメインオブジェクトがあります。Web 層から、ドメイン オブジェクトの配列として DTO にバインドされる 1,2 文字列を取得します。
この場合、デフォルトの Spring コンバーター String to Array of Objects がカスタム コンバーターよりも優先され、空のドメイン オブジェクトで作成されたドメイン オブジェクトの配列が発生します。
しかし、DB から ID に基づいてドメイン オブジェクトを取得するコンバーターを実行する必要があります。
Spring のデフォルト コンバーターに対して最初にコンバーターを強制的に実行するにはどうすればよいですか。
PS: 変換ターゲット オブジェクトをドメイン オブジェクトではなくオブジェクトにしました。これは、これを汎用にして、すべてのドメイン オブジェクトで機能する必要があるためです。
私は mvc:annotation-driven を使用しておらず、必要に応じて手動で拡張しました。
<context:component-scan base-package="com.shivaji" use-default-filters="false">
<context:include-filter expression="org.springframework.stereotype.Controller" type="annotation" />
</context:component-scan>
<bean class="com.shivaji.mvc.request.shivajiRequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="conversionService" ref="applicationConversionService" />
<property name="validator" ref="validator" />
</bean>
</property>
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
<bean class="org.springframework.http.converter.StringHttpMessageConverter" />
<bean class="org.springframework.http.converter.FormHttpMessageConverter" />
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="conversionServiceExposingInterceptor" class="org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor">
<constructor-arg ref="applicationConversionService" />
</bean>
<bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean" id="applicationConversionService">
<property name="converters">
<set>
<bean class="com.shivaji.converter.DateToStringConverter">
<property name="pattern" value="dd-MM-yyyy HH:mm:ss.SSSSSS" />
</bean>
</set>
</property>
</bean>
<!-- Support auto conversion -->
<bean class="com.shivaji.converter.auto.AutoEntityToIdConverterBeanFactory" />
<bean class="com.shivaji.converter.auto.AutoIdToEntityConverterBeanFactory" />
<bean class="org.springframework.mapping.support.ConversionMapperFactory" id="conversionMapperFactory" autowire="byType" />