私は、システムの他のコンポーネントのポートフォリオへの参照を取得する必要があります。理想的にはコンストラクタの一部としてインクルードされていますが、注入時には使用できないため、これは不可能です。Guiceのアシスト射出
public class Strategy {
Portfolio portfolio; <-- how should I get this here?
@Inject
public Strategy(QuoteDao dao, ??) {...}
public execute();
}
例は幾分簡略化され - それは単に実行()コールの一部としてポートフォリオを通過することはできません。
私は、さまざまなソリューションを通じて考えたが、どれも理想的なように見えるん:
- がPortfolioProviderを注入する - しかし、どのプロバイダは、ポートフォリオへのアクセス を取得していますか?
- は反対ハンドラでポートフォリオを保存し、ユーザー (私はAppEngineのを使用しています)、そして プロバイダで取得するにはログインしているユーザーを使用してログインして - しかし、私は匿名 ユーザーを処理できるようにシステムをしたいと思います
- ストア静的にThreadLocal、再び プロバイダでアクセスにおけるポートフォリオは - 誰かがここで私を助けることができれば非常にそれをお願い申し上げ
非常に不格好と思われますか?私はそううまくいけば、私は何かを明らかに不足しています...
おかげで、 マーク
答えをくれてありがとうJesse - 私はRequestScoped PortfolioProviderを注入し、setterを呼び出してコマンドハンドラで初期化することにしました。私はその後、アプリケーションのどこにでもプロバイダを注入し、ポートフォリオにアクセスすることができます。私は、要求スコープが何とかとにかくカバーの下にthreadlocalを使用していると思いますか? – MarkNS