6

Guice のバックグラウンドから来て、使用してスコープからオブジェクト値をシードできることを知っています。

  scope.seed(Key.get(SomeObject.class), someObject);

から値を取得する Bean を登録することでこれを行うことができると思いますがAbstractBoundContext、カスタム スコープから 1 つの値をシードするだけの例は見つけにくいようです。他の場所に注入できる値をシードするカスタム スコープを作成するにはどうすればよいですか?

編集: 現在、次の回避策を使用しています。これは、スコープに入るときにインターセプターに挿入して設定しConfiguration、スレッドローカルプロバイダーを介して挿入できます。ただし、ハックが少ないと感じたり、Weldのスコープ/スコープコンテキストシステムとより統合されているオプションをまだ探しています。

@Singleton
public class ConfigurationProducer {

    private final InheritableThreadLocal<Configuration>  threadLocalConfiguration =
    new InheritableThreadLocal<>();

    @Produces
    @ActiveDataSet
    public ConfigurationConfiguration() {
       return threadLocalConfiguration.get()
    }

    public void setConfiguration(Configuration configuration) {
         threadLocalConfiguration.set(configuration);
    }    

}
4

1 に答える 1