2015-01-23 20 views
6

Tôi có một ứng dụng khởi động và trong một trong những mặt tiền của tôi, tôi cố gắng Autowire các conversionService như thế này:Nhiều conversionServices vào mùa xuân-boot

@Autowired 
private ConversionService conversionService; 

như là kết quả tôi có được điều này:

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 

Để khắc phục điều này, tôi đã thêm một Vòng loại lilke này:

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

và tất cả đều hoạt động. Tuy nhiên tất cả các trình chuyển đổi tùy chỉnh của tôi sẽ tự động được thêm vào số mvcConversionService. Và bây giờ tôi muốn mở rộng ConversionService và thêm một phương pháp khác vào nó, tuy nhiên các trình chuyển đổi của tôi lại được thêm vào mvcConversionService. Có cách nào để nói mùa xuân khởi động mà conversionService để sử dụng để tự động đăng ký chuyển đổi của tôi ở đó? Tôi không muốn tự liệt kê tất cả các trình chuyển đổi sang conversionService mới.

+0

Bạn đã bao giờ tìm thấy một giải pháp tốt hơn cho việc này? Cố gắng triển khai Spring Cloud Config Server và 'integrationConversionService' chỉ xuất hiện –

+0

Có thể trùng lặp của [Làm thế nào để Autowired trong ConversionService trong springboot] (http://stackoverflow.com/questions/30039619/how-to-autowired-in-conversionservice -in-springboot) –

Trả lời

0

Tôi đã gặp sự cố tương tự. Vấn đề có vẻ là bạn cần xác định dịch vụ chuyển đổi nào bạn muốn sử dụng. Bạn có thể làm điều đó bằng XML hoặc sử dụng cấu hình Spring Boot.

Tôi đang sao chép ở đây một phần câu trả lời cho một số rất similar question (cái đã làm việc cho tôi) và đánh dấu câu hỏi này là có thể trùng lặp.

Nhìn vào số Spring documentation cho biết, bạn nên khai báo ConversionService. Trong cấu hình XML nó sẽ trông như thế này:

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> 
    <property name="converters"> 
     <set> 
      <bean class="example.MyCustomConverter"/> 
     </set> 
    </property> 
</bean> 
Các vấn đề liên quan