java - Callable 中的 Guice DI

标签 java guice

我有一个关于在并行环境中使用 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/

相关文章:

guice - 如何使用 guice-servlet 将过滤器映射到 servlet?

java - 我在哪里可以获得 Jersey 指南包?

javascript - Vert.x:从 Java 部署 JavaScript Verticle 失败

java - 如何使用Maven在界面中设置当前项目版本和项目构建时间戳?

java - Guice 代理支持循环依赖

java - 如何使用 Guice 重新初始化 Controller 中的注入(inject)组件?

java - ServletModule.filter 与 @WebFilter

java - 如何使用JDEE环境在Emacs中调试ImageJ插件?

java - Struts:同时验证两个字段

java - 从 Android 设备删除内存中的文件?