2017-02-28 47 views
0

我正在努力使用spring引導在轉換器類中自動裝入依賴關係。什麼是最優雅的解決方案來解決這個問題?如何在Spring Boot Converter中自動裝入依賴關係?

配置

@Configuration 
public class Config { 

    @Bean 
    public ConversionServiceFactoryBean conversionFacilitator() { 
     ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean(); 
     factory.setConverters(getConverters()); 
     return factory; 
    } 


    private Set<Converter> getConverters() { 
     Set<Converter> converters = new HashSet<>(); 
     converters.add(new MyConverter()); 
     return converters; 
    } 
} 

轉換器類,而不是讓Spring創建

@Component 
public class MyConverter implements Converter<Type1, Type2> { 

    @Autowired 
    private Dependency dependency; // Null here due to the component not being injected 


    @Override 
    public Type2 convert(Type1 type1) { 
     return dependency.something(type1); 
    } 
} 
+0

你能告訴你怎麼設置'Dependency'彌補DI?我相信這可能是一個問題。 –

回答

1

的依賴性不被注入,因爲你與新創建MyConverter。

您不需要一種方法來返回一組轉換器。春天可以爲你做,只需要自動連線。 Spring非常聰明,可以爲您提供一組所有找到的轉換器實現。

你應該使用類似:

@Configuration 
public class Config { 

    @Bean 
    @Autowired 
    public ConversionServiceFactoryBean conversionFacilitator(Set<Converter> converters) { 
    ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean(); 
    factory.setConverters(converters); 
    return factory; 
    } 
} 
+0

謝謝,我沒有想到春天是那麼聰明。 – Grim

相關問題