记一个spring中一个普通类(@component)中注入bean报空指针的错误

记一个spring中一个普通类(@component)中注入bean报空指针的错误

  • 异常信息
  • 代码
    • 错误原因
    • 原因
    • 正确获得对象

异常信息

记一个spring中一个普通类(@component)中注入bean报空指针的错误_第1张图片这里我向webmagic的pipeline使用@Autowired注入一个ElasticsearchRestTemplate 对象,在启动spider的时候这个对象报空

代码

记一个spring中一个普通类(@component)中注入bean报空指针的错误_第2张图片

错误原因

记一个spring中一个普通类(@component)中注入bean报空指针的错误_第3张图片
在添加pipeline的时候使用的new方法

原因

即某个类中的成员,如果是@Autowired的方式注入Spring Bean,则当前类的实例,必须也是Spring Bean才能成功注入(添加注解@component),即该实例不能用new xxx()来获得,这种方式获得的实例无法调用@Autowired注入的Bean,应该也采用@Autowired注入

正确获得对象

记一个spring中一个普通类(@component)中注入bean报空指针的错误_第4张图片即我之前的pipeline也需要是从springbean注入而不是new出

你可能感兴趣的:(踩坑记录)