Spring方法替换最终方法

时间:2016-12-06 11:52:17

标签: java spring

我遇到了Method Replacer,想知道我们是否可以将Method Replacer用于Final方法。

以下是代码:

sh script

以下是Method replacer的代码:

public class FriendlyImpl implements Friendly {
  public void sayHello(String name) {
    System.out.println("Hello "+ name);
  }
}

这是bean.xml

import java.lang.reflect.Method;
import org.springframework.beans.factory.support.MethodReplacer;

public class FriendlyReplacer implements MethodReplacer {
  public Object reimplement(Object o, Method m, Object[] a)
      throws Throwable {

    System.out.println("Hola "+a[0]);

    return null;
  }
}

2 个答案:

答案 0 :(得分:2)

最终方法不能覆盖注入/ JSR-330。

答案 1 :(得分:1)

是的,您写的是Spring使用反射API查找私有方法,但是在方法替换器概念中Spring创建了目标类的子类,即我们要替换的方法所在的类,并使用我们提供的替换方法覆盖了该方法。在那个春天产生了子类。 因此,如果方法是最终方法,则无法覆盖破坏Java规则的方法。