Spring Data仓库异步保存

4

我有一个使用Spring Data Redis和CrudRepository的服务,在我的一个服务方法中它执行了一个查询然后进行保存。我希望将保存操作变成异步的。是否可以在我的扩展CrudRepository中让保存方法变成异步的呢?

下面的示例中,我想让save操作变成异步的。

public interface MyRepository extends CrudRepository<User, String> {
    public List<User> findByUserId(Long userId);
}

public class MyServiceImpl implements MyService {

    @Autowired
    private MyRepository myRepository;

    public void addUser(User newUser) {
        List<User> users = myRepository.findByUserId(newUser.getUserId());
        // other operations on users
        myRepository.save(); // want this be async
    }
}
1个回答

1
你可以在MyRepository中重新声明save方法并使用@Async进行注释。"最初的回答"。
public interface MyRepository extends CrudRepository<User, String> {
    public List<User> findByUserId(Long userId);
    @Async
    public <S extends User> S save(S entity);
}

7
需要返回Future类型吗? - Hank
1
这样,如果@Async设置正确,你将始终得到null作为返回值。 - Andrey
1
如何在此处获取 Future<S>? - echoaman
@Async <S extends User> Future<S> save(final User user);@异步 <S extends User> Future<S> save(final User user); - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接