私は数年前から Guice を使用しており、Spring を使用する会社に切り替えたばかりです。私は Dependency Injection のファンですが、Spring に自分のやりたいことをさせる方法を理解するのにいくつか問題があります。
これが私が現在コードに持っているものです(スカラコードではなく、その構文を使用して短いだけです):
class A(b: B)
class B(exe: ExecutorService)
...
@Value("${search.threads}") var searchThreads: int
exe = Executors.newFixedThreadPool(searchThreads)
グアバでは、名前付き注釈を使用してさまざまなエグゼキューターを使用するか、それを必要とする人のために1つのエグゼキューターを使用して定義するだけです
final int searchThreads = readSearchThreadsFromConfigs()
bind(Executor.class).toInstance(Executors.newFixedThreadPool(searchThreads));
Spring 内でこれを設定する方法がわかりません。私が見るすべての例は、ジェネリックを実際にカバーしていないようであり、静的コンストラクターや値を「提供」できることも実際にはカバーしていないようです。
上記の Guice と同様の結果を得る最良の方法は何ですか? Guice and dagger の使用のような「モジュール」の概念はありますか (xml ファイル以外、静的にチェックされるもの)?
編集: 現在使用されているコードの一部を次に示します。コンストラクター内にエグゼキューターを作成します。
@Autowired
public LogsModule(@Value("${search.threads}") final int searchThreads) {
searchPool = Executors.newFixedThreadPool(searchThreads);
}