Является ли метод @Async вне транзакции?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Является ли метод @Async вне транзакции?

Сообщение Anonymous »

Имейте метод @Transactional и вызовите метод @Async (поскольку это другой компонент, он обычно должен работать через прокси-сервер вокруг рекомендаций), но это другой компонент и в нем нет аннотации @Transactional.
Итак,
  • является ли метод sendConfirmation внутри транзакции?
  • делает ли Контекст другого threadlocal @Async повлиял на контекст исходного threadlocal и получил sendConfirmation из транзакции?
  • удаление @Async меняет процесс или нет?
@Service
@AllArgsConstructor
public class OrderServiceImpl implements OrderService {

private final OrderRepository orderRepository;
private final NotificationService notificationService;

@Override
@Transactional
public void processOrder(Order order) {
order.setStatus(OrderStatus.PROCESSING);
orderRepository.save(order);

notificationService.sendConfirmation(order); // @Async method

order.setStatus(OrderStatus.CONFIRMED);
orderRepository.save(order);
}
}

@Service
public class NotificationServiceImpl implements NotificationService {

@Async
@Override
public void sendConfirmation(Order order) {
// Send email...
log.info("Sending confirmation for order: {}", order.getId());
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... ransaction
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»