1.场景
ObjectProvider在自动注入时,去容器中查找ObjectProvider<Demo>,还是查找Demo。
@Bean
@Autowired
public Xxxx messageListener(ObjectProvider<Demo> demo)
2.解决
直接上代码,测试。
1.将demo放入容器
@Controller
public class Demo {
}
2.注入ObjectProvider<Demo>并输出
@Autowired
ObjectProvider<Demo> demo;
@Test
public void contextLoads() {
System.out.println(demo);
}
3.输出结果
org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider@4eed2acf
3.结论
ObjectProvider注入时,去容器中找的Demo,而不是去找的ObjectProvider<Demo>,但实际的对象是DefaultListableBeanFactory$DependencyObjectProvider@4eed2acf,而不是Demo的一个实例。
(待解析)