Search in sources :

Example 1 with SpringContextAware

use of com.virjar.vscrawler.web.api.SpringContextAware in project vscrawler by virjar.

the class VSCrawlerClassLoader method loadCrawler.

/**
 * @param crawlerEntryName 爬虫入口类,应该是com.virjar.vscrawler.web.crawler.CrawlerBuilder的实现类
 * @return 由入口类构造的一个爬虫对象
 * @see CrawlerBuilder
 */
public CrawlerBean loadCrawler(String crawlerEntryName, WebApplicationContext webApplicationContext) throws InstantiationException, IllegalAccessException {
    // check
    try {
        CrawlerBuilder crawlerBuilder = (CrawlerBuilder) loadClass(crawlerEntryName).newInstance();
        if (crawlerBuilder instanceof SpringContextAware) {
            SpringContextAware springContextAware = (SpringContextAware) crawlerBuilder;
            springContextAware.init4SpringContext(webApplicationContext);
        }
        // for spring bean auto injection
        injectDependency(crawlerBuilder, true, webApplicationContext);
        VSCrawler vsCrawler = crawlerBuilder.build();
        return new CrawlerBean(vsCrawler, true, this);
    } catch (ClassNotFoundException e) {
    // this exception will not happen
    }
    return null;
}
Also used : VSCrawler(com.virjar.vscrawler.core.VSCrawler) SpringContextAware(com.virjar.vscrawler.web.api.SpringContextAware) CrawlerBuilder(com.virjar.vscrawler.web.api.CrawlerBuilder) CrawlerBean(com.virjar.vscrawler.web.model.CrawlerBean)

Aggregations

VSCrawler (com.virjar.vscrawler.core.VSCrawler)1 CrawlerBuilder (com.virjar.vscrawler.web.api.CrawlerBuilder)1 SpringContextAware (com.virjar.vscrawler.web.api.SpringContextAware)1 CrawlerBean (com.virjar.vscrawler.web.model.CrawlerBean)1