Spring: Как сделать некоторые не асинхронные методы в компоненте - PullRequest
0 голосов
/ 14 марта 2019

Я несколько раз искал ответ на этот вопрос, но безрезультатно.

Мне нужен компонент Spring с некоторыми методами @Async, а некоторые нет. Как это:

@Component
public class MyComp {
  @Autowired private OtherComp delegate;
  @Async
  void doAsyncAction() { delegate.doAction(); }
  // non-Async
  Object getData() { return delegate.getSomeData(); }
}

К сожалению, когда вызывается метод getData, делегат становится пустым. Я могу создать обходной путь, который использует CompleteableFuture для возврата базового объекта, но это ненужные накладные расходы.

@Component
public class MyComp {
  @Autowired private OtherComp delegate;
  @Async
  void doAsyncAction() { delegate.doAction(); }
  @Async
  CompleteableFuture<Object> getData() { return CompleteableFuture.completedFuture(delegate.getSomeData()); }
}

Кто-нибудь знает лучший обходной путь?

Спасибо, Bryan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...