2015-01-23 24 views
6

Ho un'applicazione di avvio e in uno dei miei facciate cerco di Autowire il conversionService in questo modo:multipli conversionServices in primavera-boot

@Autowired 
private ConversionService conversionService; 

come risultato ottengo questo:

Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.core.convert.ConversionService] is defined: expected single matching bean but found 3: mvcConversionService,defaultConversionService,integrationConversionService 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1061) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:949) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533) 
... 16 more 

per superare questo ho aggiunto un Qualifier lilke questo:

@Autowired 
@Qualifier("mvcConversionService") 
private ConversionService c; 

e funziona tutto questo. Tuttavia tutti i miei convertitori personalizzati vengono aggiunti automaticamente allo mvcConversionService. E ora voglio estendere lo ConversionService e aggiungervi un altro metodo, tuttavia i miei convertitori vengono nuovamente aggiunti allo mvcConversionService. C'è un modo per dire spring-boot che conversionService utilizzare per registrare automaticamente i miei convertitori lì? Non desidero elencare manualmente tutti i convertitori nel nuovo conversionService.

+0

Hai mai trovare una soluzione migliore per questo? Cercando di implementare Spring Cloud Config Server e un 'integrationConversionService' sono appena spuntati –

+0

Possibile duplicato di [How to Autowired in ConversionService in springboot] (http://stackoverflow.com/questions/30039619/how-to-autowired-in-conversionservice -in-springboot) –

risposta

0

Si è verificato un problema simile. Il problema sembra essere che è necessario definire quale servizio di conversione si desidera utilizzare. Puoi farlo tramite XML o usando una configurazione di avvio a molla.

Sto copiando qui parte della risposta ad un molto similar question (quello che ha funzionato per me) e contrassegnando questa domanda come possibile duplicato.

Uno sguardo nel Spring documentation rivela, che si dovrebbe dichiarare un fagiolo ConversionService. Nella configurazione XML sarebbe simile a questa:

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> 
    <property name="converters"> 
     <set> 
      <bean class="example.MyCustomConverter"/> 
     </set> 
    </property> 
</bean>