我已经使用 Guice 几年了,刚刚切换到使用 Spring 的公司。我是依赖注入的粉丝,但在弄清楚如何让 Spring 做我想做的事情时遇到了一些问题。
这是我现在在代码中的内容(它不是 scala 代码,只是更短,所以使用该语法):
class A(b: B)
class B(exe: ExecutorService)
...
@Value("${search.threads}") var searchThreads: int
exe = Executors.newFixedThreadPool(searchThreads)
在番石榴中,我可以使用命名注释来拥有不同的执行器,或者只为需要它的任何人使用一个执行器并定义
final int searchThreads = readSearchThreadsFromConfigs()
bind(Executor.class).toInstance(Executors.newFixedThreadPool(searchThreads));
我不确定如何在 Spring 中进行设置。似乎我看到的每个示例都没有真正涵盖泛型,也没有真正涵盖静态构造函数或能够“提供”值。
从 Guice 获得与上述结果相似的结果的最佳方法是什么?是否有像 guice 和 dagger 使用这样的“模块”的概念(除了 xml 文件,静态检查的东西)?
编辑:这是当前使用的一些代码。它在构造函数中创建执行器:
@Autowired
public LogsModule(@Value("${search.threads}") final int searchThreads) {
searchPool = Executors.newFixedThreadPool(searchThreads);
}