Java 在Dropwizard应用程序中的Guice AbstractModule中注入配置

Java 在Dropwizard应用程序中的Guice AbstractModule中注入配置,java,dependency-injection,guice,dropwizard,Java,Dependency Injection,Guice,Dropwizard,我正在使用Guice和Dropwizard开发一个应用程序,我们正在创建不同的捆绑包,如Guice捆绑包、迁移捆绑包等,并在initialize()方法中将它们添加到引导中 我试图在MyModule类中注入配置对象,但无法这样做 以下是应用程序类的代码: public class MyApplication extends Application<MyConfiguration> { public static void main(String args[]) throws

我正在使用Guice和Dropwizard开发一个应用程序,我们正在创建不同的捆绑包,如Guice捆绑包、迁移捆绑包等,并在initialize()方法中将它们添加到引导中

我试图在MyModule类中注入配置对象,但无法这样做

以下是应用程序类的代码:

public class MyApplication extends Application<MyConfiguration> {

    public static void main(String args[]) throws Exception {
        new MyApplication().run(args);
    }

    private GuiceBundle<MyConfiguration> guiceBundle = GuiceBundle.<MyConfiguration> newBuilder()
        .addModule(new MyModule()).enableAutoConfig(getClass().getPackage().getName())
        .setConfigClass(MyConfiguration.class).build(Stage.DEVELOPMENT);

    @Override
    public void initialize(Bootstrap<MyConfiguration> bootstrap) {
        bootstrap.addBundle(guiceBundle);
    }

    @Override
    public void run(MyConfiguration configuration, Environment environment) throws Exception {
        ...
    }
}
使用这种方法,我发现很难在模块类中注入配置对象,因为配置对象在initialize()方法中不可用,但在run()方法中可用

有没有其他方法可以做到这一点


注意:我知道另一种方法,您可以在run()方法中创建模块类的对象,用于创建注入器(配置和环境对象作为参数在MyModule类的构造函数中传递)。但这需要我在run()方法中注册所有托管对象和所有资源。我希望避免这样做。

GUI模块是存储配置的类,在创建注入器时进行解析。无法在模块中显式插入对象


如果不深入研究
GuiceBundle

的内部,我想我无法告诉您更多,Guice模块是存储配置的类,在创建注入器时会得到解决。无法在模块中显式插入对象


如果不研究
GuiceBundle

的内部,我想我无法告诉您更多,您可以使用提供商来解决此问题吗
public class MyModule extends AbstractModule {

    @Override
    protected void configure() {

    }
}