对返回void的方法使用SpringFrameWork @Async

时间:2015-11-27 17:44:01

标签: java spring mongodb asynchronous

我使用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的方法?

3 个答案:

答案 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);