Я хотел бы создать фабрику, которая создает задачу, внедрить 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() {
}
}
Как только я это сделаю, я добавлю TaskFactory, а затем вызову метод create с помощью dbName.
Вы также можете использовать AssistedInject из Guice, чтобы делать подобные вещи.
Кстати, имена классов должны начинаться с заглавной буквы.