我有一个服务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(){...};
}
蓝山帝景
相关分类