以下は私が直面している問題の概算です。Guice:(動的ウェブプロパティ)に基づいて実行時のインジェクションを変更する方法
いくつかのルールを持つパスワードバリデータがあると考えてください。
public interface RuleChecker{
//Checks for a password strenght, returns 10
//for strong or 0 for soft password.
int check(String pass);
}
いくつかの実装がありますが、私たちのサービスは8点を超える場合にのみパスワードを受け入れます。
public class NoCheck implements RuleChecker {
public int check(String pass){return 10;}
}
public class LengthCheck implements RuleChecker{
...
}
public class AlphanumericCheck implements RuleChecker{
...
}
public class AlphaAndLenghtCheckAdapter implements RuleChecker{
...
}
は、しかし、テスト目的のために、私たちは、「管理者」これらのルール、そしてが持っているものを選択することができ、アプリケーション内のWebサービスを実装したいです。
public class PasswordCheckService{
private RuleChecker checker;
@Inject
public PasswordCheckService(final RuleChecker checker){
this.checker = checker;
}
public boolean checkPassword(String password){
return checker.check(password) > 8;
}
}
Guiceには実行時に変更する方法がありますか?サービスには注入がありますか?
例:
は、私たちは、アプリケーションを起動し、デフォルトでLengthCheckは、アプリケーション上で選択し、注入され、我々はNOCHECK]チェックボックスを選択して、データベースに保存されているオプションは、保存するウェブサイトで、私はへのGuiceを設定することができますサービスが以前に注入したBeanを自動的に変更しますか?今から、新しいパスワードのチェックはありませんか?
- 今のよう
、私はこれらのトピック
Google Guice and varying injections at runtime
発見したしかし、私はプロバイダのようなものが私の問題に合うかどうかを知るいけません。Guice runtime dependency parameters reinjection この素晴らしい質問は、私が探しているものではなく、類似のものを話すことです。
guice: runtime injection/binding at command line これは私の問題に最も近いですが、彼は「ランタイム」を起動するだけで、それを変更しません。
助けてください?
ありがとうございました!
最初のコメントのヒントを使用してこのPOCを実装しましたが、まだ動作しません。別のボタンを選択して変更すると、サービスBeanは更新されません。 https://bitbucket.org/ramonboza/guicedynamicconfig
良い質問。私は非常に似たようなことをしようとしてきました。 – tom