次の階層構造があります。
public class ItemImpl extends RepositoryBase<ItemImpl> {
@Inject
ItemImpl( dependency ) {
super( dependency )
}
}
public class RepositoryBase<T> extends Base<T> {
public RepositoryBase( dependency ) { //Constructor without @Inject
super( dependency )
}
@Intercept <--- Works
public someMethod( ) {}
}
public class Base<T> {
public Base( dependency ){ } //Constructor without @Inject
@Intercept <--- Does not work ***
public someMethod( ) {}
}
上記のように、傍受は階層のレベル 3 では機能しません。Guice の AOP 制限によると、インスタンスは Guice を使用して作成する必要があり、子 ItemImpl には @Inject を持つコンストラクターがあるため、この子の親が機能するはずだと推測しました。
レベル 3 で傍受が機能しないのはなぜですか? レベル 2 で傍受が機能するのはなぜですか? 親の両方に@Injectのコンストラクターがありませんか?