こんにちは:Guiceが必要なパラメータでクラスを「ハイドレイト」した直後に操作を実行したいと思います。これを行うための慣用的な方法は何ですか?@after_running_constructorアノテーション...または「post-guice」初期化メソッドにタグを付けることができるようなものはありますか?
通常、これはinit()メソッドまたはコンストラクター自体で行うだけですが、クラスのコンストラクターが実行されるまで、Guiceが必要な情報をクラスに注入していないことがわかります。
こんにちは:Guiceが必要なパラメータでクラスを「ハイドレイト」した直後に操作を実行したいと思います。これを行うための慣用的な方法は何ですか?@after_running_constructorアノテーション...または「post-guice」初期化メソッドにタグを付けることができるようなものはありますか?
通常、これはinit()メソッドまたはコンストラクター自体で行うだけですが、クラスのコンストラクターが実行されるまで、Guiceが必要な情報をクラスに注入していないことがわかります。
クラスが必要なすべての「パラメーター」を確実に取得できるようにする唯一の慣用的な方法は、それらのパラメーターをコンストラクターに渡すことです。ミュータビリティについての簡単な説明は、こちらを参照してください。
構築に注入とパラメーター化の両方が含まれているためにコンストラクター注入の使用に問題がある場合は、ファクトリ パターンまたはAssistedInjectを使用できます。
いくつかのドメイン クラスを配線する場合、Guice の内部構造を認識する必要があるため、アプローチを再検討する必要があると思います。
Guice はライフサイクル メソッドをサポートしていません。同様の質問がここで尋ねられ、そこの人々は Guice 拡張ライブラリGuiceyFruitを推奨しましたが、プロジェクトがもはや維持されているかどうかはわかりません。
また、Guice が注入する順序は、こちらのドキュメントで定義されています。
クラスにコンストラクターとメソッド注入の両方を行うのはなぜですか? いくつかのユースケースがあると確信していますが、コンストラクターインジェクションのみを使用するだけで init() 問題を解決できます。