今天跑单元测试遇到一个问题。
用反射调用私有方法,私有方法里面涉及调用数据库 mapper没有注入进去的 报了空指针
类似https://www.jianshu.com/p/4b3f55e76637
这个文章的情况
但是我对他解释的原因不是很认同
因为把private改为public后 就没有报空指针
个人猜测是因为Spring 无法得知私有方法的细节,也就无法注入,请大佬讲一下深入一点的原理 ,或者源码
代码类似于
Class AImpl{
@Autowried
private Amapper amapper
priavte void f(){
amapper.select();
}
}
Class Test{
@Autowried
private AImpl aImpl;
public void test(){
Method method = AImpl.class.getDeclaredMethod("f",null);
method.setAccessible(true);
method.invoke(aImpl,null);
}
}