[英]Dropwizard + Guice Bundle getting Application Configuration in the Module
[英]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.