gpt4 book ai didi

java - Callable 中的 Guice DI

转载 作者:行者123 更新时间:2023-12-02 10:49:22 24 4
gpt4 key购买 nike

我有一个关于在并行环境中使用 Guice 的具体问题。

我有一个需要构造函数参数的可运行程序。

class task implements Runnable{
String dbname="";
task(String dbname)
{
this.dbname=dbname
}
@
Inject
private ICacheService cacheService
public void run(){
//logic here

}
bind(ICacheService).to(CacheServiceImpl.class);


}

问题:如何实例化任务。

我无法使用 ExecutorService.submit(新的,因为这不是正确的方法并且违背了 guice 的目的。)

最佳答案

我将创建一个工厂来创建任务,通过任务中的构造函数注入(inject) ICacheService 并使用 javax.inject.Provider

public class TaskFactory {

private Provider<ICacheService> cacheServiceProvider;

@Inject
public TaskFactory(Provider<ICacheService> cacheServiceProvider) {
this.cacheServiceProvider = cacheServiceProvider;
}

public task create(String dbname) {
return new task(dbname, cacheServiceProvider.get());
}
}


class task implements Runnable {

private final String dbname;
private final ICacheService cacheService;

public task(String dbname, ICacheService cacheService) {
this.dbname = dbname;
this.cacheService = cacheService;
}

@Override
public void run() {

}
}

完成此操作后,我将注入(inject) TaskFactory,然后使用 dbName 调用 create 方法。

您还可以使用AssistedInject Guice 做类似的事情。

顺便说一句,类名应该以大写字母开头。

关于java - Callable 中的 Guice DI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52288564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com