クラスBのプロパティを持つクラスAがあると考えてみましょう。
public class ClassA{
private ClassB classB;
public ClassA(ClassB classB){
this.classB = classB;
}
//some methods ommitted.
}
いいえ、CGLIB プロキシがあります。
public class CGLibProxy implements MethodInterceptor{
@Override
public Object intercept(Object object, Method method, Object[] args,
MethodProxy methodProxy) throws Throwable {
if (method.getName().startsWith("print")){
System.out.println("We will not run any method started with print");
return null;
}
else
return methodProxy.invokeSuper(object, args);
}
}
さて、CGLib
ClassA に使用すると、プロキシは ClassA インスタンスを作成します。
私の質問は、classB パラメーターをこのプロキシに渡す方法です。私が理解している限り、CGLib は ClassA の空のコンストラクターを実行しますか?