Spring ConversionService ajoutant des convertisseurs
J'ai cherché le problème ci-dessous, mais ne pouvait pas trouver une réponse.
Je veux utiliser le printemps du service de conversion en écrivant mon convertisseur personnalisé qui implémente org.springframework.de base.convertir des.convertisseur de.Convertisseur.
Puis-je ajouter mon convertisseur personnalisé comme ci-dessous:
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean id="StringToLoggerConverter" class="com.citi.spring.converter.LoggerConverter" />
</list>
</property>
</bean>
Quand vous faites le au-dessus de ma demande d'initialisation échoue, parce que je suis primordial de haricots conversionService et de l'enregistrement uniquement mon convertisseur personnalisé.
Comment ne pas surcharger la conversionService et d'en ajouter mon convertisseur personnalisé à la liste des convertisseurs, en même temps, en gardant les existants?
Merci d'avance.
source d'informationauteur nikkatsa
Vous devez vous connecter pour publier un commentaire.
Pour quelqu'un qui trébuche sur ce maintenant via une recherche sur google ou similaire+ de 2 ans après la question a été posté, l'ajout de convertisseurs a été rendue beaucoup plus facile grâce à la Java Config:
WebMvcConfigurerAdapter
fournit laaddFormatters(FormatterRegistry)
méthode qui peut être utilisée pour spécifier d'autres personnalisé convertisseurs.Tout en expérimentant différentes façons et même, au printemps suivant, le code source de certains, je suis tombé sur un truc intéressant.
Le seul moyen que j'ai trouvé pour utiliser conversionService sans écraser l'existant convertisseurs avec mon personnalisées était soit de prolonger ou de re-mettre en œuvre les conversionService l'appel de la super-classe de afterPropertiesSet() méthode pour enregistrer la valeur par défaut convertisseurs puis ajouter la coutume.
Mais même si je l'utilise de cette façon, lors de l'exécution j'ai été faire une exception qu'aucun convertisseur n'a été trouvé pour mon des types spécifiques (par exemple de la Chaîne de l'Enregistreur).
Qui a déclenché mon intérêt et j'ai suivi le printemps de code source pour savoir pourquoi, et j'ai réalisé que le printemps a été d'essayer de trouver un convertisseur personnalisé enregistré avec PropertyEditor. Je ne suis pas sûr de savoir pourquoi cela se passe. Je dois ajouter ici que mon application n'est pas à l'aide de spring mvc et conversionService pourrait en quelque sorte besoin d'être inscrit, et je ne l'ai pas fait.
Enfin, j'ai résolu le problème avec l'enregistrement d'un convertisseur personnalisé à l'aide de l'éditeur de propriétés. Cette documentation peut être considérée comme référence:
http://static.springsource.org/spring/docs/current/spring-framework-reference/html/validation.html
Je serais très intéressé de savoir pourquoi le Printemps n'était pas à trouver mon adresse personnalisée de convertisseurs dans le conversionService du registre (ou au moins pourquoi le printemps n'était pas à la recherche à ce registre pour trouver la coutume des convertisseurs). Ai-je été absent toute la configuration?
Avec le printemps > 4, il n'est plus nécessaire de mettre en œuvre une dérivation de la ConversionService. L'initialiser dans un @Configuration annoté classe comme suit:
}
Est venu à travers un moyen très intéressant pour ce faire, dans Stackoverflow - https://stackoverflow.com/a/12760579/204788
À l'aide d'une fonctionnalité appelée Collection fusionvous pouvez faire ceci:
Il suffit de remplacer le ConversionServiceFactoryBean.afterPropertiesSet() et définissez la ConversionService objet de votre convertisseurs.
Laissez vos convertisseurs de mettre en œuvre une interface qui permet de définir un ConversionService objet, dire ConversionServiceAware.
Le seul problème est d'obtenir l'accès à l'organisme de convertisseurs, de sorte que vous aurez également à remplacer le " setConverters()' méthode.
Vous pouvez également ajouter dinamically à l'aide de addConverter méthode sur votre DefaultConversionService-ish classe:
écrire une coutume conversionService
puis modifiez votre code xml
Je pense que cela va vous aider à...