java - Guice -如何在扩展抽象模块的类中注入(inject)依赖项 - Java

标签 java guice guice-3

我必须从EnvironmentModule触发TestDriver.startPoller(),因为EnvironmentModule是从Abstractmodule扩展而来的不确定如何在 EnvironmentModule 中注入(inject)依赖项是否可能?如果不是,我如何从 EnvironmentModule

触发 TestDriver.startPoller()
@Log4j2
@AllArgsConstructor(onConstructor = @__(@Inject))
public class TestDriver {

    private ClientTrafficCalculator clientTrafficCalculator;
    private TaskAllocator taskAllocator;


    @SneakyThrows
    public void startPoller() {


        new Thread(clientTrafficCalculator::prepareRateLimiterForAllClients).start();
        new Thread(taskAllocator::processPendingRecordsInDDB).start();
        log.info("All threads are started");

    }

}

环境模块

    @Log4j2
    @AllArgsConstructor(onConstructor = @__(@Inject))
    public class EnvironmentModule extends AbstractModule {
    
        private TestDriver testDriver;
    
    
        @SneakyThrows
        public EnvironmentModule(final String[] args) {
    
            marketplace = System.getProperty("realm", "USTest");
            final String realm = getPropOrDefault("realm", "USTest");
            final String root = getPropOrDefault("root", ".");
            AppConfig.initialize(SERVICE_NAME, null, appConfigArgs);

            TestDriver.startPoller(); 
    
        }

    @Override
    public void configure() {
        install(new TomcatContainerModule(new ServiceModule(Test)));
    }
}

预期:

TestDriver.startPoller();//这工作正常

当前结果

TestDriver.startPoller();//抛出空指针异常,因为它没有被注入(inject)并且 TestDriver 为 null

最佳答案

我想我找到了答案,我们可以做如下的事情

@Log4j2
public class TestDriver extends AbstractModule {


    @Override
    public void configure() {
        requestInjection(this);
    }

    @Inject
    public void startPoller(ClientTrafficCalculator clientTrafficCalculator,
        TaskAllocator taskAllocator, PManager pManager) {

        new Thread(pManager::name).start();
      
    }


}

我们必须安装它,安装将触发该方法

install(new TestDriver()); //trigger pollers for proxy and task allocation

谢谢 Jk

关于java - Guice -如何在扩展抽象模块的类中注入(inject)依赖项 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56810648/

相关文章:

java - 在 guice 中使用带有 FactoryModuleBuilder 的辅助注入(inject) - 工厂注入(inject)未完成

guice - 无法将 serenity-cucumber(又名 thucydides-cucumber)与 cucumber-guice 一起使用

Java Eclipse : ComboBox action button based on item selected (e. g.,温度转换)

java - 如何使用gwt在java中使用加密和解密来保存密码

java - 我们可以将 CDATA 嵌入到 xml 中的名称值对的纯字符串中吗?

java - Android:存储在 SQLite 中时图像的字节数组为空

java - Guice 中 Key 中的 get() 方法

java - 使用 Guice 注入(inject)依赖项适用于一种方法,而不适用于另一种方法

java - 根据参数注入(inject)一个类

tomcat - 自定义动态错误404页面-guice/tomcat