我无法在Spring的后台运行该方法

我有一个服务DocumentServiceImpl。


在这里面我想运行一个方法index()的class GlobalSearch背景。


@Service

@RequiredArgsConstructor

 public class DocumentServiceImpl implements DocumentService { 


... any code


@Transactional

 public void save(){


...


  Thread indexTread = new Thread(new GlobalSearch(file, id), "GlobalSearch");

  indexTread.start();


....


 }


}

方法index使用类GlobalSearch的从类ExtractTextFromFile方法。我使用构造函数和Lombok注释@RequiredArgsConstructor注入类ExtractTextFromFile


@Component

@RequiredArgsConstructor

 public class GlobalSearch implements Runnable{

 public final ExtractTextFromFile extractTextFromFile; (41 lines)


 public File file;

 public Long id;

 public GlobalSearch(File File, Long id){

    this.file = file;

    this.id = id;

}


public void index(File file, Long id) {

    File textFile = extractTextFromFile.toText(file, id);


 ... code of this method


}


@Override

public void run() {

    index(file, id);

}


...other methods

public void search(){...}

public String delete(){...}


}

..但IDE给出Variable 'extractTextFromFile' might not have been initialize了public final ExtractTextFromFile extractTextFromFile;


如果我使用注入:


@Autowired

ExtractTextFromFile extractTextFromFile;

然后给出错误:


Exception in thread "GlobalSearch" java.lang.NullPointerException

at bps.module.zxc.component.GlobalSearch.index(GlobalSearch.java:41)

at bps.module.zxc.component.GlobalSearch.run(GlobalSearch.java:136)

at java.lang.Thread.run(Thread.java:748)

此类ExtractTextFromFile:


@Component

@RequiredArgsConstructor

 public class ExtractTextFromFile {

 public File toText(File file, Long id) {

  extractFromPfd();

  extractFromWord();

 }

  extractFromPfd(){...};

  extractFromWord(){...};

 }


DIEA
浏览 134回答 2
2回答

蓝山帝景

我解决了这个问题,删除了GlobalSearch和ExtractTextFromFile类的注解@Component,然后将它们初始化为简单的句点 GlobalSearch globalSearch = new GlobalSearch()...和 ExtractTextFromFile extractTextFromFile = new ExtractTextFromFile()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java