javaspringmongodbasynchronous

Using SpringFrameWork @Async for methods that return void


I'm using the Spring Boot framework as my backend.

This is one of the calls I want to do asynchronously - it just saves a user into my mongoDB database:

@Async
public Future<Void> saveUser(String userid) {
    User user = new User();
    user.setUserId(userid);
    return new AsyncResult<Void>(mongoTemplate.save(user));
}

The method gives me an errors as mongoTemplate.save(user) returns a void value and not a Void object.

I tried to change the method by substituting in void as follows but it does not work as Future<void> and AsyncResult<void> is not accepted:

@Async
public Future<void> saveUser(String userid) {
    User user = new User();
    user.setUserId(userid);
    return new AsyncResult<void>(mongoTemplate.save(user));
}

Is there anyway to run a method that returns void in an asynchronous way on Spring?


Solution

  • Try the following:

    return new AsyncResult<Void>(null);
    

    Else if you just want to trigger the method and forget, then use:

    @Async
    public void saveUser(String userid) {
        User user = new User();
        user.setUserId(userid);
        mongoTemplate.save(user);
    }