読者です 読者をやめる 読者になる 読者になる

protected メソッドなら、インターセプトできる。

Guice インターセプトバインドで、private メソッドインターセプトができないのは
あたり前だと理解できるけど、protected メソッドインターセプトできるのですね。

例えば、@Transaction アノテーションが着いた protected メソッド でも以下を
com.google.inject.Moduleconfigure メソッドで以下のようにして
protected メソッドインターセプトできます。

Injector injector = ...(省略)...
@Override
protected void configure(){
   binder().bindInterceptor(Matchers.any()
      , Matchers.annotatedWith(Transaction.class)
      , injector.getInstance(TransactionExecutor.class)
   );
}

本当は、java.util.concurrent.Callable 実装で
call() の中で呼び出す privaete メソッドインターセプトしたかったのですが、
隠蔽化して、java.util.concurrent.ExecutorService の submit
java.util.concurrent.Future として、call()の実行時に、
callの中から呼ぶ private メソッドインターセプトしたかったのですが、
callの中から呼ぶメソッドprotected まで、引き上げてうまくいきました。

Guice は、private 変数にインジェクトできるのに。。。