我对使用Guice有疑问。我有一个名为< code>Main的类,它是使用Guice和一个方法注入的构造函数,每次调用该方法都会创建一个类< code>AppThread的o thread对象。< code>AppThread是< code>Main中的私有类。问题是,在线程的执行过程中,我想创建一个class ClassX
的对象。此对象是使用Guice注入的构造函数。我不知道注入< code>ClassX的对象的最佳形式是什么。我的第一个解决方案是在< code>Main内部注入< code>Injector,并在线程内部使用注入器注入class < code > clasx 的对象。
是否存在一种更干净的方法来将依赖注入线程内部?
谢谢
与其拥有自己的 Thread
子类(无论如何都不鼓励这样做),不如将“线程代码”编写为实现 Runnable
的常规对象。您的 Main
类应该注入此类(或者您实际上可以注入提供程序
public class MyMainClass {
@Inject
MyMainClass(Provider<MyRunnable> runnableProvider) { ... }
public void spawnThread() {
new Thread(runnableProvider.get()).start();
}
}
public class MyRunnable implements Runnable {
@Inject
MyRunnable(ClassX myX) { ... }
public void run() {
... do work ...
}
}