GuiceとDropwizardを使って開発したアプリケーションで、guiceバンドル、移行バンドルなどの異なるバンドルを作成し、initialize()メソッドでそれらをブートストラップに追加するアプリケーションに取り組んでいます。Guiceの構成をDropwizardアプリケーションのAbstractModule
MyModuleクラスにConfigurationオブジェクトを注入しようとしていますが、実行できません。以下は
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 {
...
}
}
がAbstractModule拡張モジュールのクラスです:
は、次のアプリケーションクラスのコードである。このアプローチでは
public class MyModule extends AbstractModule {
@Override
protected void configure() {
}
}
を、私はそれは難しいModuleクラスで構成オブジェクトを注入する見つけています()メソッドでは使用できませんが、run()メソッドでは使用できます。
これを行う別の方法はありますか?
注:インジェクタを作成するrun()メソッドのModuleクラスのオブジェクト(MyModuleクラスのコンストラクタでパラメータとして渡されるコンフィグレーションおよび環境オブジェクトを使用して)を作成できる別の方法についてはわかっています。しかし、これは、すべてのManagedオブジェクトとすべてのリソースをrun()メソッドに登録する必要があります。私はそれを避けたい。
https://github.com/HubSpot/dropwizard-guice#environment-and-configurationに従って、これを回避するプロバイダを使用できますか? –