java - 通过多线程上传多个文件时面对 Nullpointer
问题描述
我正在尝试使用多个线程将多个文件数据上传到数据库。
控制器层
System.out.println("saveStudent");
for (int i = 1; i < 10; i++)
{
Thread t = new Thread(new FileHandlerClass("test" + i + ".csv"));
t.start();
}
@Component
public class FileHandlerClass
implements Runnable
{
public FileHandlerClass()
{
}
@Autowired
private SpringbootService service;
private String fileName;
public FileHandlerClass(String fileName)
{
System.out.println(fileName);
this.fileName = fileName;
}
@Override
public void run()
{
this.service.saveStudent(this.fileName); // Facing nullpointer exception here
}
}
但我得到一个空指针异常
this.service.saveStudent(this.fileName)
;.
我该如何解决?
删除 @Autowired 有效,但我不知道为什么在使用上述代码时它没有初始化 bean。
private SpringbootService service;
private String fileName;
public FileHandlerClass(String fileName, SpringbootService service)
{
System.out.println(fileName);
this.fileName = fileName;
this.service = service;
}
@Override
public void run()
{
service.saveStudent(this.fileName);
}
解决方案
你没有初始化service
,因此当你打电话时this.service.saveStudent(this.fileName)
你得到NullPointerException
. 请参阅农民关于为什么@Autowired
不起作用的答案。
另外,一般提示:我将删除以下构造函数:
public FileHandlerClass()
{
}
因为这可能会引入一个为 null 的场景fileName
,这也会导致NullPointerException
.
推荐阅读
- c# - .NET 中写入的文件在调试停止后是否存在(存储图像)?
- jquery - jQuery DataTables move columns
- c - 寻找将 Devc++ 控制台的字体更改为“光栅字符”的功能
- javascript - 在 JavaScript 中将 MediaStream 转为 RTMP
- google-apps-script - 为什么 getRange() 没有得到范围?
- r - 在 Optim() 函数中获取参数 ($par) 的所有可能值
- python - Mac 上的 Python SMTP 服务器
- scala - 如何一般地组合返回不同单子的单子函数?
- python - 使用 cx_Freeze 将我的 python 游戏编译为可执行文件
- python - 使用 Numpy 的中心差异算法