我使用Spring Boot框架作为我的后端。
这是我想要异步执行的调用之一 - 它只是将用户保存到我的mongoDB数据库中:
@Async
public Future<Void> saveUser(String userid) {
User user = new User();
user.setUserId(userid);
return new AsyncResult<Void>(mongoTemplate.save(user));
}
该方法给出了错误,因为mongoTemplate.save(user)
返回void
值,而不是Void
对象。
我尝试通过在void
中替换如下更改方法,但它不起作为Future<void>
并且不接受AsyncResult<void>
:
@Async
public Future<void> saveUser(String userid) {
User user = new User();
user.setUserId(userid);
return new AsyncResult<void>(mongoTemplate.save(user));
}
无论如何运行一个在Spring上以异步方式返回void的方法?
答案 0 :(得分:14)
尝试以下方法:
@Async
public void saveUser(String userid) {
User user = new User();
user.setUserId(userid);
mongoTemplate.save(user);
}
只有在存在void之外的返回类型时才需要使用Future。
答案 1 :(得分:3)
Void
可以拥有的唯一值是null
。所以你需要的只是
User user = new User();
user.setUserId(userid);
mongoTemplate.save(user)
return new AsyncResult<Void>(null);
答案 2 :(得分:1)
简单返回
return new AsyncResult<>(null);