#java #spring-boot #spring-data-jpa #spring-transactions
Вопрос:
У меня есть приложение для загрузки Spring, и я пытаюсь использовать TransactionalEventListener, но безуспешно. У меня есть транзакционный метод, и в конце этого метода мне нужно запустить это событие и проверить некоторые условия, чтобы выполнить обновление в другой транзакции:
@Transactional(propagation = Propagation.REQUIRED)
public Person save(Person person) {
// ... some logic here
repository.save(person);
eventPublisher.publishEvent(new CustomerInteractionEvent(this, person));
}
Мой составитель списка событий:
@Service
public class CustomerInteractionEvent {
@Async
@TransactionalEventListener
public void handleEvent(CustomerInteractionEvent event) throws InterruptedException {
Person person = repository.findById(event.getPerson());
person.getPhones(); // LazyInitializationException here
}
}
В других случаях я бы просто использовал @Async
вместе @Transactional
, и это работало бы идеально, но не тогда, когда я использую EventListener
. Связана ли эта проблема с весенним АОП?