簡體   English   中英

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

[英]Inject Configuration in Guice AbstractModule in Dropwizard Application

我正在開發使用Guice和Dropwizard開發的應用程序,我們在其中創建不同的包,如guice包,遷移包等,並將它們添加到initialize()方法的bootstrap中。

我試圖在MyModule類中注入Configuration對象,但無法這樣做。

以下是Application類的代碼:

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 {
        ...
    }
}

下面是Module類,它擴展了AbstractModule:

public class MyModule extends AbstractModule {

    @Override
    protected void configure() {

    }
}

使用這種方法,我發現很難在Module類中注入Configuration對象,因為Configuration對象在initialize()方法中不可用,但在run()方法中可用。

有沒有其他方法可以做到這一點?

注意:我知道另一種可以在run()方法中創建Module類對象的方法,用於創建注入器(在MyModule類的構造函數中將配置和環境對象作為參數傳遞)。 但這需要我在run()方法中注冊所有托管對象和所有資源。 我想避免這樣做。

Guice模塊是存儲配置的類,並在創建注入器時解析。 您無法在模塊中顯式注入對象。

如果不考慮GuiceBundle內部,我認為我不能告訴你更多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM