2017-02-28 3 views
0

私はスプリングブートを使用してコンバータクラス内で依存関係をオートワイヤする方法に苦労しています。この問題を解決する最も洗練されたソリューションは何ですか?あなたが新しいとMyConverterを作成するのではなく、春には、それを作成してみましょうされているのでSpringブートコンバータ内で依存関係を自動配線する方法は?

設定

@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; 
    } 
} 

Converterクラス

@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

は、あなたがどのようにDI用に 'Dependency'を設定している表示できます

次のようなものを使用する必要がありますか?私はそれが問題かもしれないと信じています。 –

答えて

1

は依存関係が注入されていません。

コンバータのセットを返すメソッドは必要ありません。 Springは自動的に配線します。 Springは、それが見つけたすべてのコンバータ実装をセットにするほどスマートです。

@Configuration 
public class Config { 

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

ありがとう、私は春が賢いとは思わなかった。 – Grim

関連する問題