Feign客户端总是在Spring boot/Ccrawler4j应用程序中抛出一个空指针异常



我在Spring启动应用程序中运行一个Crawler4j实例,而我的OpenFeign客户端始终为null。

public class MyCrawler extends WebCrawler {
@Autowired
HubClient hubClient;
@Override
public void visit(Page page) {
// Lots of crawler code...
if (page.getParseData() instanceof HtmlParseData) {
hubClient.send(webPage.toString()); // Throws null pointer exception
}
}

我的Hubclient

@FeignClient("hub-worker")
public interface HubClient {
@RequestMapping(method = RequestMethod.POST, value = "/pages", consumes = "application/json")
void send(String webPage);
//void createPage(WebPage webPage);
}

我的主要应用程序

@EnableEurekaClient
@EnableFeignClients
@SpringBootApplication
public class CrawlerApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(CrawlerApplication.class, args);
}
}

堆垛机


ext length: 89106
Html length: 1048334
Number of outgoing links: 158
10:14:38.634 [Crawler 164] WARN  e.u.ics.crawler4j.crawler.WebCrawler - Unhandled exception while fetching https://www.cnn.com: null
10:14:38.634 [Crawler 164] INFO  e.u.ics.crawler4j.crawler.WebCrawler - Stacktrace: 
java.lang.NullPointerException: null
at com.phishspider.crawler.MyCrawler.visit(MyCrawler.java:79)
at edu.uci.ics.crawler4j.crawler.WebCrawler.processPage(WebCrawler.java:523)
at edu.uci.ics.crawler4j.crawler.WebCrawler.run(WebCrawler.java:306)
at java.base/java.lang.Thread.run(Thread.java:834)

第79行是hubClient调用。当我把hubVlient分解到另一个类中时,我在爬网程序类中实例化了这个类,比如hubclient hc=new hubclient((,然后有了一些方法hc.send(page(,分解后的类中的hubclient将抛出空指针。

为了将Springbeans(您的客户端(注入到您的crawler4j Web爬网程序对象中,您需要通过Spring实例化Web爬网程序。

为此,您需要编写WebCrawlerFactory的自定义实现,该实现提供/创建Spring管理的Web爬网程序对象。为此,您的Web爬网程序实现需要是一个SpringBean,即至少用@Component进行注释。

相关内容

  • 没有找到相关文章

最新更新