问题描述:
在代码中使用反射获取对象实例后,对象实例中通过@Autowrite注解注入的属性值为null(注入失败),导致带反射获取的对象实例调用方法时出现空指针等情况。
问题原因:
通过反射获取对象实例相当于“new”了一个对象,所以这个对象并没有被Spring所管理,导致无法获取注入的属性。
1. 示例代码
// 消费者 使用newInstance获取对象实例
public class Consumer {
private static final String CLASS_PATH = "com.example.demo.dome.Provider";
public void fun1() throws Exception {
Class<?> sourceClass = Class.forName(CLASS_PATH);
Provider provider= (Provider) sourceClass.newInstance();
provider.say();
}
}
// 提供者
@Component
public